编写一个方法 calculateRoots,将 3 个 double 作为输入,表示二次方程的二次项、线性项和常数项,并返回一个 ComplexNumber[] 表示方程的根。
如果判别式 b^2 - 4ac 是正数,则有 2 个实根。您应该创建一个大小为 2 的新 ComplexNumber[] 并将两个 ComplexNumbers 放入其中,每个都有一个值为 0 的复数分量(并且将实分量设置为根)。为了保持一致性,首先放置 2 个根中较小的一个。
如果判别式为 0,则只有一个根。由于方法的返回类型始终相同,您仍然应该创建一个大小为 1 的新 ComplexNumber[],并放置一个具有适当实值集和复数分量 0 的 ComplexNumber。
如果判别式小于 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)
}
}
}