2 java
我正在尝试解决Java的Art&Science,二次方程的解决方案.
import acm.program.*;
public class QuadraticEquation extends ConsoleProgram {
public void run(){
println("Enter coefficients for quadratic equation");
int a = readInt("Enter first number: ");
int b = readInt("Enter second number: ");
int c = readInt("Enter third number: ");
double result = quadratic(a,b,c);
println("The first solution is: " + result);
}
private double quadratic(int a, int b, int c){
double underSquare = (b*b-4*a*c);
double x = (-b+Math.sqrt(b*b-(4*a*c)))/(2*a);
if (underSquare < 0) {
return null;
} else {
return (x);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个错误:
return null;
说:
类型不匹配:无法从null转换为double
我真的不明白这个错误是什么,我应该如何正确解决?
您需要了解基本类型(例如double)和盒装对象类型(例如,资本-D Double)之间的差异.虽然Double是对象的引用(因此可以是null),但是double是原始的而不是null.
编译器告诉您已声明函数的返回类型,double因此null无法转换为double.
当然,您可以通过将返回类型更改为Double(可以使null返回合法,并使原始双打
自动装入Doubles)来"修复"问题,但这并不能真正为您提供服务.你想要一个更好的错误处理策略(其中有很多......一些可能性是抛出一个异常,使用一个可选的返回类型,使用一个标志值,例如not-a-number aka Double.NaN).
| 归档时间: |
|
| 查看次数: |
4881 次 |
| 最近记录: |