我正在尝试使用多种方法来完成一个简单的程序来计算测试成绩,但是我的方法不会返回任何字母。 IDE说我的方法必须返回类型为String
的结果。
public static String getGrade1(int num1) {
if (num1 <= 100 && num1 >= 90) {
String a = "A";
return a;
} else if (num1 < 90 && num1 >= 80) {
String b = "B";
return b;
}else if (num1 < 80 && num1 >= 70) {
String c = "C";
return c;
}else if (num1 < 70 && num1 >= 60) {
String d = "D";
return d;
}else if (num1 < 60) {
String f = "F";
return f;
}
}
答案 0 :(得分:1)
您的函数必须始终返回一个非void类型的值。问题在于,如果您调用getGrade1(110)
,则函数将无法返回return语句。在末尾添加else
子句(不带尾随if
),该子句将返回某些内容,并且应停止向您发出警告。
该代码应该可以工作:
public static String getGrade1(int num1) {
if (num1 <= 100 && num1 >= 90) {
return "A";
} else if (num1 < 90 && num1 >= 80) {
return "B";
} else if (num1 < 80 && num1 >= 70) {
return "C";
} else if (num1 < 70 && num1 >= 60) {
return "D";
} else if (num1 < 60) {
return "F";
} else {
return "";
}
}
答案 1 :(得分:1)
要解决您的问题,最简单的方法是在方法末尾添加默认的return
语句,例如:
public String method() {
// Code
return ""; // Return some default String value
}
注意:
如果您希望发生异常而不是返回默认值,则可以执行以下操作:
public String method() throws Exception {
// Code
throw new Exception(); // Throw some exception
}
答案 2 :(得分:0)
尝试一下:
public static String getGrade1(int num1) {
String grade = "";
if (num1 <= 100 && num1 >= 90) {
grade = "A";
} else if (num1 < 90 && num1 >= 80) {
grade = "B";
}else if (num1 < 80 && num1 >= 70) {
grade = "C";
}else if (num1 < 70 && num1 >= 60) {
grade = "D";
}else if (num1 < 60) {
grade = "F";
}else{
grade = "NA";
}
return grade;
}
答案 3 :(得分:-4)
我相信,如果您的return语句在if-else语句中,则编译器不会将其视为return语句。做vonNikalasson所做的事情,但是在结尾处摆脱else语句,然后在结尾处返回。
public static String getGrade1(int num1) {
if (num1 <= 100 && num1 >= 90) {
return "A";
} else if (num1 < 90 && num1 >= 80) {
return "B";
} else if (num1 < 80 && num1 >= 70) {
return "C";
} else if (num1 < 70 && num1 >= 60) {
return "D";
} else if (num1 < 60) {
return "F";
}
return;
}