gpt4 book ai didi

java - 为什么我在初始化字母时遇到错误以及如何修复它?

转载 作者:行者123 更新时间:2023-12-01 08:02:10 25 4
gpt4 key购买 nike

public static char determineGrade(float grade)
{
char letter;


if(grade>=90 && grade<=100)
{
letter='A';
}
else if(grade>=80 && grade<=89)
{
letter='B';
}
else if(grade>=70 && grade<=79)
{
letter='C';
}
else if(grade>=60 && grade<=79)
{
letter='D';
}
else if(grade<=59)
{
letter='F';
}


return letter;
}

程序一直告诉我初始化字母,但我不明白为什么需要这样做。谢谢。

最佳答案

Why I am getting an error to initialize letter and how do I fix it?

问题是有可能到达 return未将值分配给 letter 的语句。 (当 grade 大于 100.0 时,就会发生这种情况。虽然这在您的应用程序上下文中可能没有意义,但 Java 编译器无法知道这一点。)

人们建议返回“默认”值。我认为这是错误的,除非 API 规范定义了默认值。 (而且,在我看来,这样做是糟糕的 API 设计。)

我认为更好的方法是如果提供的参数没有意义,则抛出异常(例如 IllegalArgumentException )。

public static char determineGrade(float grade) {
if (grade >= 90 && grade <= 100) {
return 'A';
} else if (grade >= 80 && grade <= 89) {
return 'B';
} else if (grade >= 70 && grade <= 79) {
return 'C';
} else if (grade >= 60 && grade <= 79) {
return 'D';
} else if (grade >= 0 && grade <= 59) {
return 'F';
} else {
throw new IllegalArgumentException("grade is out of range: " + grade);
}
}

这里的另一个设计问题是是否适合使用 float 来表示成绩。存在这样的风险:由于舍入误差,计算等级的计算给出的值有一点点“偏差”;即89.999998而不是90.0 。如果您要在这里使用浮点类型,则需要使用阈值比较而不是简单的 >=<=针对整数值。

关于java - 为什么我在初始化字母时遇到错误以及如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24566103/

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