“3。编写一个方法,该方法采用三个实数a,b和c表示二次方程ax2 + bx + c的系数,并使用二次方程式确定方程ax2 + bx + c =的一个解0.使用if语句确保程序对所有数字输入都能正常工作。“
这是我的代码,但是当我输入数字时,我得到0的答案
public int quadraticEquation(int a, int b, int c)
{
if (a <= 0 && b<=0 && c<=0){
System.out.println("Must be a real number");
} else if(
(a*(x^2))+(b*x)+c==0);
return x;
}
答案 0 :(得分:5)
这里有多个问题:
您对真实解决方案的检查存在缺陷。 -x^2 - 2x - 1
具有所有负系数,但其解决方案是真实的。
我没有看到x
在任何地方声明,是否可以编译?
x^2
不“x平方”,但“x按位XOR 2”。在进一步操作之前,您应该学习Java 。
在else if
此处(a*(x^2))+(b*x)+c==0);
您必须非常幸运才能返回x
。
作业要求您输入三个 真实的 数字,但您要将参数声明为int
。那不好。
计算解决方案的正确公式为:
总而言之,你想要这样的东西:
public double solveQuadratic(double a, double b, double c)
{
double D = b * b - 4 * a * c;
if (D < 0)
throw new RuntimeException(); // complex solution
return (-b + Math.sqrt(D)) / (2 * a);
}
上面的代码未经测试,我不会说Java,只是从Google收集的东西。
修改:经过测试的here,它似乎提供了与WolframAlpha相同的解决方案。
答案 1 :(得分:0)
您需要使用二次公式来求解零,即
(-b +- sqrt(b^2 - 4ac)) / 2a
我不会为你做这个问题,但我会指出你正确的方向。您需要知道的是,您可以使用Math.sqrt()函数计算平方根。你有其他所有变量
int numerator = -b + Math.sqrt(b*b - 4*a*c);
int denominator = 2*a
int result = numerator / denominator; //(this is integer division, I hope you understand)
现在把它放到代码中。
答案 2 :(得分:0)
首先,二次方程中有两个根(x的值)。你必须找到那两个。根据{{1}}正面或负面,根源可以是真根或虚根。由于* x ^ 2 + b * x + c = 0的解是b*b-4*a*c
或x=[-b+squareroot(b^2-4*a*c)]/2*a
。因此x=[-b-squareroot(b^2-4*a*c)]/2*a
没有真正的价值。你应该先学习。请遵循此link。
你可以做这样的事情
b^2-4*a*c<0
我不知道你为什么只想要一个解决方案。如果你真的想要一个,你可以做如下。
public static void main(String[] args) {
Double[] result = quadraticEquation(4, 8, 1);
if(result==null){
System.out.println("There is no real roots for x");
}else{
for(Double d:result){
System.out.println("value for x:" +d);
}
}
}
public static Double[] quadraticEquation(int a, int b, int c) {
Double[] arr = new Double[2];
if ((b*b - (4 * a * c)) < 0) {
return null;
} else {
arr[0] = (-b + Math.sqrt((b*b - 4 * a * c))) / 2 * a;
arr[1] = (-b - Math.sqrt((b*b - 4 * a * c))) / 2 * a;
}
return arr;
}
答案 3 :(得分:-1)
所以你要回来x。 x在哪里设置?它不在此代码中。
也许你想要的东西是:
x = (a*(x^2))+(b*x)+c;