Java中的二次方程

时间:2018-03-02 17:05:15

标签: java

所以我试图在Java中创建二次方程的函数,但是我得到的错误是我应该返回一个double。我究竟做错了什么?

double quad(double a, double b, double c){
   double x;
   double y;
   x = (-b + Math.sqrt(b*b - 4*a*c))/(2*a);
   y = (-b - Math.sqrt(b*b - 4*a*c))/(2*a);
   if(!Double.isNaN(x)&&!Double.isNaN(y)){
     if (x>=y) return x;
     else if (y>=x) return y;
   }
   else if(Double.isNaN(x)&&!Double.isNaN(y)) return y;
   else if(!Double.isNaN(x)&&Double.isNaN(y)) return x;
   else {
     System.out.println("Value is unspecified");
     return null;
   }
 }

4 个答案:

答案 0 :(得分:1)

您将返回null。

原始类型不允许使用Null。

如果要返回“null”,则必须使用Double。

答案 1 :(得分:1)

您无法从返回类型为基本类型的方法(此处为null)返回double。你应该在这里处理这种情况的方式有例外。

答案 2 :(得分:0)

没有if

%macro m_to_array(list, n);
  *optionally - if you want to not specify n;
  %let n = %sysfunc(countw(&&&list));
  %do _i = 1 %to &n;
    %global &list.&_i.;
    %let &list.&_i. = %scan(&&&list.,&_i.);
  %end;
%mend m_to_array;

%m_to_array(namelist);
%put _global_;

在最后的其他地方

 else return y;

答案 3 :(得分:0)

您不能将null作为双精度值返回。 或者,即使程序将其用作解决方案,也可以返回-1或0。

您可能想抛出一个异常来向程序显示出问题了。

throw new IllegalArgumentException("No solution");

使用该功能时,您可以说:

try {
    double root = quad(a, b, c);
} catch (IllegalArgumentException e) {
    //No solution
}

有关更多信息,您可以检出此How to solve quadratic equations in java