我的代码:
int a = 1;
int b = 6;
int c = 5;
double x1 = (-b + Math.sqrt(b^2 - 4*a*c))/(2*a);
double x2 = (-b - Math.sqrt(b^2 - 4*a*c))/(2*a);
System.out.println("x=" + x1 + x2 );
输出:
x=NaNNan
答案 0 :(得分:5)
b^2
没有按照您的想法在Java中执行。写下b*b
代替。 ^
运算符实际上是the bitwise-XOR operator;没有指数运算符。 (但是,有一个Math.pow()
function。)
答案 1 :(得分:2)
除了^
是XOR而不是幂,你的求解器还有另一个问题:有时,B 2 小于4AC,在这种情况下,方程只有复杂的解。在调用Math.sqrt
之前,您的代码应检查该条件,以避免返回NaN
。
最后,您的输出不正确:您的println
会生成根的连接,中间没有空格,而不是单独打印。
以下是修复后的代码:
int a = 1;
int b = 6;
int c = 5;
int d = b*b - 4*a*c;
if (d < 0) {
System.out.println("No real solutions.");
} else {
double sqD = Math.sqrt(d);
double x1 = (-b + sqD)/(2*a);
double x2 = (-b - sqD)/(2*a);
System.out.println("x=" + x1 + " " + x2 );
}
答案 2 :(得分:0)
您可以写b * b
或Math.pow(b,2)
代替b ^ 2
,bitwise xor(不包括)b
和2
。
答案 3 :(得分:0)
看起来你正试图在这里制作三角函数。不记得这个名字,但我可以说b的意思是平方?如果是这样,请使用Math.pow(numberToSquare,theSquareNumber) 一行将如下所示: 双x1 =(-b + Math.sqrt(Math.pow(b,2) - 4 * a * c))/(2 * a)