[英]Attempting to program quadratic formula?
我是Java的新手,我的第一个项目是建立计算器。
试图编写二次方程式; 尽管我没有错误,但是我得到了错误的答案。
void quadratic() {
if((b*b-4*a*c) < 0){
System.out.println("The answer is imaginary.");
}
else {
System.out.println(
"The two roots x values of the quadratic function "
+ a + "x^2 + " + b + "x + " + c + " are "
+ ((-b) + (Math.sqrt((b*b)-(4*a*c))/(2*a))) + " and "
+ ((-b) - (Math.sqrt((b*b)-(4*a*c))/(2*a)))
);
}
}
如果我替换a=1, b=4, c=4
,我得到-4和-4。
如果我用a=1, b=1, c=-12
代替,我得到2.5和-4.5。
可能只是数学上的错误,但我认为公式是正确的。
不,论坛并不完全正确。 您将错误的事物除以2*a
。
我的建议是排除判别式计算,并删除多余的括号。 这将使正确编写代码变得更加容易:
void quadratic() {
double discriminant = b*b-4*a*c;
if(discriminant < 0) {
System.out.println("The answer is imaginary.");
} else {
System.out.println(
"The two roots x values of the quadratic function "
+ a + "x^2 + " + b + "x + " + c + " are "
+ (-b + Math.sqrt(discriminant)) / (2*a) + " and "
+ (-b - Math.sqrt(discriminant)) / (2*a)
);
}
}
您缺少括号,应该是
(((-b) + (Math.sqrt((b*b)-(4*a*c)))/(2*a))) + " and " + (((-b) - (Math.sqrt((b*b)-(4*a*c)))/(2*a))))
您需要将整个事情除以2a。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.