[英]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.