簡體   English   中英

Java中的二次方程

[英]Quadratic equation in 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;
   }
 }

您返回的是null。

基本類型中不允許為Null。

如果要返回“ null”,則必須使用Double。

您不能從返回類型為原始類型(此處為double )的方法中返回null 在這里處理這種情況的方式是有例外的。

沒有如果

 else return y;

最后就是

throw new IllegalArgumentException("...") ;

您不能將null作為雙精度null返回。 或者,即使程序將其用作解決方案,也可以返回-1或0。

您可能想拋出一個異常來向程序顯示出問題。

throw new IllegalArgumentException("No solution");

在使用該函數的地方可以說:

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

有關更多信息,您可以查看如何在Java中求解二次方程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM