gpt4 book ai didi

java - "Type mismatch: cannot convert from null to double"是什么意思?

转载 作者:行者123 更新时间:2023-12-02 14:45:22 26 4
gpt4 key购买 nike

我正在尝试解决 Java 艺术与科学中的练习,即二次方程的解法。

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);
}
}
}

我的行中有一个错误: 返回空;说:

Type mismatch: cannot convert from null to double

我不太明白这个错误是什么,我应该如何正确解决这个问题?

最佳答案

您需要了解difference between primitive types (e.g., double) and boxed object types (e.g., capital-D Double)Double 是对对象的引用(因此可以为 null),而 double 是基元,不能为 null.

编译器告诉您,您将函数的返回类型声明为 double,因此 null 无法转换为 double >.

当然,您可以通过将返回类型更改为 Double 来“解决”问题(这将使 null 返回合法,并导致原始 double 变为 auto-boxedDoubles),但这并不能真正为你服务。您需要更好的错误处理策略(其中有很多......一些可能性是抛出异常,使用 Optional 返回类型,使用标志值,例如非数字又名 Double.NaN )。

关于java - "Type mismatch: cannot convert from null to double"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17370648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com