2 回答
TA贡献1804条经验 获得超2个赞
你的数学方程的实现是正确的,但你必须放在括号里。例如 ;
double root1 = (-coefB + Math.sqrt(getDiscriminant()))/ 2 * coefA;
这里(-coefB + Math.sqrt(getDiscriminant()))方程被除以通过2。在此之后乘用coefA。小心点。用这个例子改变你的逻辑;
double root1 = (-coefB + Math.sqrt(getDiscriminant()))/ (2 * coefA);
所以适用于其他领域以获得正确的结果。
你的两种方法应该改变。
static double getRoot1()
{
double root1 = (-coefB + Math.sqrt(getDiscriminant()))/ (2 * coefA);
return root1;
}
static double getRoot2()
{
double root2 = (-coefB - Math.sqrt(getDiscriminant()))/ (2 * coefA);
return root2;
}
更详细的,运算符优先级表;
Operators Precedence Associativity
postfix increment and decrement ++ -- left to right
prefix increment and decrement, and unary ++ -- + - ~ ! right to left
multiplicative * / % left to right
additive + - left to right
TA贡献1878条经验 获得超4个赞
对于 QuadraticEquation 类来说,这不是一个好的设计。三个变量(coefA、coefB、coefC)应该是实例变量,而不是静态的。您应该有一个将三个值作为输入的构造函数。构造函数调用 getDiscriminant() 并计算两个可能的答案,并使用 getter 检索它们的效率要高得多。
添加回答
举报