gpt4 book ai didi

java - 为什么它返回错误的字符串?

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

我是 Java 新手,所以提前道歉。

我正在制作一种方法,获取学生的考试成绩(int mark)并返回成绩(String Grade)。但有时它会返回错误的成绩。

public String calculateGrade(int mark) {
String grade = "";
if (mark < 40) {
return ("Fail");
}
else if (mark < 50) {
return ("3rd");
}
else if (mark < 60) {
return ("2ii");
}
else if (mark < 70) {
return ("2i");
}
else if (mark >= 70) {
return ("1st");
}
else if (mark < 0) {
return ("Invalid mark");
}
else if (mark > 100) {
return ("Invalid mark");
}
return grade;
}
System.out.println(labExample.calculateGrade(50));

问题是,每当我输入值 -1 时,它都会返回“失败”而不是“无效代码”。超过 100 的情况也是如此,因为它返回“1st”而不是“无效代码”。

尽管我已经说明了如果成绩为 <0 或 >100 则返回什么,但它似乎忽略了它。

任何帮助或指示都会很棒。谢谢。

最佳答案

The problem is that whenever i put in a value -1 it returns as "Fail" instead of "Invalid code.""*

-1< 40 ,所以你的第一个 if的条件为真。这意味着您的 return ("Invalid mark");代码运行,这会终止该方法 - 其余代码均不会执行。 return不仅设置返回值,还继续执行后续语句,它结束方法调用。

还要注意,稍后你有一个逻辑错误,你有一系列else if导致 else if (mark < 70) 的语句接下来是 if (mark >= 70) 。那>= 70永远为真。如果mark< 70 ,上一个if条件为真,而你永远不会到达那里。

正确的方法是按顺序检查,可能(在本例中)从最低到最高,但可能会在前面检查“无效标记”。

其他说明:

  • 您不需要 ()返回值周围,return不是函数/方法。
  • 您不需要 else如果你正在做returnif尸体。
  • 您从未使用过 grade所以没有理由把它放在代码中

所以:

public String calculateGrade(int mark) {
if (mark < 0 || mark > 100) {
return "Invalid mark";
}
if (mark < 40) {
return "Fail";
}
if (mark < 50) {
return "3rd";
}
if (mark < 60) {
return "2ii";
}
if (mark < 70) {
return "2i";
}
return "1st";
}

或者分配给grade并在最后返回它,一些人认为这是最佳实践(另一些人认为这是不必要的复杂化):

public String calculateGrade(int mark) {
String grade; // ** Note I don't do = ""; I want the compiler to warn me if I try to use it without assigning to it

if (mark < 0 || mark > 100) {
grade = "Invalid mark";
}
else if (mark < 40) {
grade = "Fail";
}
else if (mark < 50) {
grade = "3rd";
}
else if (mark < 60) {
grade = "2ii";
}
else if (mark < 70) {
grade = "2i";
}
else {
grade = "1st";
}
return grade;
}

注意我需要 else在那里,因为我不 return输入if尸体。

关于java - 为什么它返回错误的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58486523/

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