用于判别二次方程的程序

时间:2013-06-20 03:40:36

标签: java complex-numbers

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

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

  2. 如果判别式为0,则只有一个根。由于方法的返回类型始终相同,因此您仍应创建一个新的ComplexNumber [],只需要大小为1,并将ComplexNumber设置为具有适当的实际值集和复杂组件0。

  3. 如果判别式小于0,则有2个根,每个根具有非零复数分量。解决各个部分并将它们存储到2个ComplexNumbers中,然后将它们放入一个数组中。

  4. 我做了以下事情。我已经很难解决这个问题因此我希望有人告诉我哪里出错了,因为程序一直显示编译器错误。

    这是 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)
      }
     }
        }
    

1 个答案:

答案 0 :(得分:1)

我能看到的一个问题是以下内容 -

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

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

complexNumber数组的实例应为complexNumber