写一个方法calculateRoots ,它将输入3倍,表示二次方程的二次,线性和常数项,并返回表示方程根的ComplexNumber []。
如果判别式b ^ 2 - 4ac是正数,则有2个实根。您应该创建一个大小为2的新ComplexNumber []并将两个ComplexNumbers放入其中,每个ComplexNumbers都有一个值为0的复杂组件(并且实际组件设置为根)。为了保持一致性,首先将2个根中较小的一个放入。
如果判别式为0,则只有一个根。由于方法的返回类型始终相同,因此您仍应创建一个新的ComplexNumber [],只需要大小为1,并将ComplexNumber设置为具有适当的实际值集和复杂组件0。
如果判别式小于0,则有2个根,每个根具有非零复数分量。解决各个部分并将它们存储到2个ComplexNumbers中,然后将它们放入一个数组中。
我做了以下事情。我已经很难解决这个问题因此我希望有人告诉我哪里出错了,因为程序一直显示编译器错误。
这是 JAVA 计划!
任何形式的提示都会有所帮助。谢谢你的好时光和帮助。
public static complexNumber[] coomplexNumbers(double a, double b, double c){
if (a==0&&b==0&&c==0){ //All values are roots
return null;
}
else if (a==0&&b==0){ //no roots
return new complexNumber[0];
}
else if (a==0){
return new complexNumber[]{-c/b}; /
}
else{
double discriminant= b*b-4*a*c;
if (discriminant < 0)
return new complexNumber[0];
else if (discriminant==0)
return new complexNumber[]{ (-b + Math.sqrt(discriminant))/(2*a)};
else
return new complexNumber[]{
(-b + Math.sqrt(discriminant))/(2*a),
(-b - Math.sqrt(discriminant))/(2*a)
}
}
}
答案 0 :(得分:1)
我能看到的一个问题是以下内容 -
return new complexNumber[]{ (-b + Math.sqrt(discriminant))/(2*a)};
(-b + Math.sqrt(discriminant))/(2*a)
的结果不是complexNumber
。
complexNumber
数组的实例应为complexNumber
。