-1

编写一个方法 calculateRoots,将 3 个 double 作为输入,表示二次方程的二次项、线性项和常数项,并返回一个 ComplexNumber[] 表示方程的根。

  1. 如果判别式 b^2 - 4ac 是正数,则有 2 个实根。您应该创建一个大小为 2 的新 ComplexNumber[] 并将两个 ComplexNumbers 放入其中,每个都有一个值为 0 的复数分量(并且将实分量设置为根)。为了保持一致性,首先放置 2 个根中较小的一个。

  2. 如果判别式为 0,则只有一个根。由于方法的返回类型始终相同,您仍然应该创建一个大小为 1 的新 ComplexNumber[],并放置一个具有适当实值集和复数分量 0 的 ComplexNumber。

  3. 如果判别式小于 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)
  }
 }
    }
4

1 回答 1

1

我可以看到的一个问题是以下问题 -

return new complexNumber[]{ (-b + Math.sqrt(discriminant))/(2*a)};

的结果(-b + Math.sqrt(discriminant))/(2*a)不是complexNumber

一个数组complexNumber应该有 的实例complexNumber

于 2013-06-20T03:46:47.253 回答