我是Java的新手,现在需要完成一项任务,但是卡住了。这个任务是使用二次方程式找到两条线的交点。老师要求我为类设置特定的输入,因此d = 5,f = -3,g = 2,m = 1和b = 3,两个交点应该是(1,4)和(-0.20,2.8)。问题是,输出返回的是(NaN,NaN)和(NaN,NaN),而不是正确的答案。我的代码有问题吗?
public class Intersect{
public static void main(String args[]){
//prompt user for parabola vars d f g
System.out.println("Enter the constant d:");
int d = IO.readInt();
System.out.println("Enter the constant f:");
int f = IO.readInt();
System.out.println("Enter the constant g:");
int g = IO.readInt();
// y = dx^2 + fx + g
//promt user for line vars m b
System.out.println("Enter the constant m:");
int m = IO.readInt();
System.out.println("Enter the constant b:");
int b = IO.readInt();
// y = mx + b
//compute intersection
// dx^2 + fx + g = mx + b
// x^2 * (d) + x * (f-m) + (g-b) = 0
int a = d;
int z = (f-m);
int c = (g-b);
double x1 = -z + (Math.sqrt (z^2 - 4 * a * c) / (2 * a));
double x2 = -z - (Math.sqrt (z^2 - 4 * a * c) / (2 * a));
double y1 = m * x1 + b;
double y2 = m * x2 - b;
//output each intersection on its own line, System.out.println() is ok for this answer submission
System.out.println("The intersection(s) are:");
System.out.println("(" + x1 + "," + y1 + ")");
System.out.println("(" + x2 + "," + y2 + ")");
}
}
(4.42,7.42)和(3.57,.57)
,还是输出为(Nan,Nan)
? - Kevinz^2
并不是你想象中的指数运算。 - azurefrog(z^2 - 4 * a * c)
的值是多少? - dshz*z
。 - Lutz Lehmann