[英]Missing Return Statement Error w/ For Loop - JAVA
我在最后一个括号中丢失了一个return语句错误,我也不知道为什么。 该方法基本上采用一个字符串,该字符串与学生的课程及其所处的当前调查问题相对应。 外部if语句与主题相对应(例如:数学,科学,英语...)。 for循环遍历数组,并将用户输入(“ US History”)与数组列表中的字符串进行匹配。 如果它们相等,则返回找到它的索引。 否则,它将继续for循环。 该方法返回一个int,但是在最后一个括号中仍然出现错误。 请帮忙!
public static int findNumber(String course, int currentQuestion) {
String newCourse = course.toLowerCase();
if (RateDriver.levelText.equals("math")) {
for (int i = 0; i < RateSurvey.math.length-1;i++) {
if (newCourse.equals(RateSurvey.math[i])) return survey[currentQuestion][i];
}
return 100;
}
else if (RateDriver.levelText.equals("science")) {
for (int i = 0; i < RateSurvey.science.length-1;i++) {
if (newCourse.equals(RateSurvey.science[i])) return survey[currentQuestion][i];
}
return 100;
}
else if (RateDriver.levelText.equals("english")) {
for (int i = 0; i < RateSurvey.english.length-1;i++) {
if (newCourse.equals(RateSurvey.english[i])) return survey[currentQuestion][i];
}
return 100;
}
else if (RateDriver.levelText.equals("social studies")) {
for (int i = 0; i < RateSurvey.social.length-1;i++) {
if (newCourse.equals(RateSurvey.social[i])) return survey[currentQuestion][i];
}
}
else if (RateDriver.levelText.equals("art")) {
for (int i = 0; i < RateSurvey.art.length-1;i++) {
if (newCourse.equals(RateSurvey.art[i])) return survey[currentQuestion][i];
}
return 100;
}
else if (RateDriver.levelText.equals("pe")) {
for (int i = 0; i < RateSurvey.pe.length-1;i++) {
if (newCourse.equals(RateSurvey.pe[i])) return survey[currentQuestion][i];
}
}
else if (RateDriver.levelText.equals("chinese")) {
for (int i = 0; i < RateSurvey.chinese.length-1;i++) {
if (newCourse.equals(RateSurvey.chinese[i])) return survey[currentQuestion][i];
}
}
else if (RateDriver.levelText.equals("japanese")) {
for (int i = 0; i < RateSurvey.japanese.length-1;i++) {
if (newCourse.equals(RateSurvey.japanese[i])) return survey[currentQuestion][i];
}
return 100;
}
else if (RateDriver.levelText.equals("french")) {
for (int i = 0; i < RateSurvey.french.length-1;i++) {
if (newCourse.equals(RateSurvey.french[i])) return survey[currentQuestion][i];
}
return 100;
}
else if (RateDriver.levelText.equals("spanish")) {
for (int i = 0; i < RateSurvey.spanish.length-1;i++) {
if (newCourse.equals(RateSurvey.spanish[i])) return survey[currentQuestion][i];
}
return 100;
}
else if (RateDriver.levelText.equals("hawaiian")) {
for (int i = 0; i < RateSurvey.hawaiian.length-1;i++) {
if (newCourse.equals(RateSurvey.hawaiian[i])) return survey[currentQuestion][i];
}
return 100;
}
else return 100;
**}** // this is where I get the error
如果for循环中未返回任何内容,则代码的某些部分将不会返回任何内容,例如:
else if (RateDriver.levelText.equals("social studies")) {
for (int i = 0; i < RateSurvey.social.length-1;i++) {
if (newCourse.equals(RateSurvey.social[i])) return survey[currentQuestion][i];
}
}
因此,如果程序到达了代码的这一部分,并且最终没有返回survey[currentQuestion][i]
,那么它将跳至if-else链的末尾,并且不返回任何内容。 您应该将它们更改为以下内容:
else if (RateDriver.levelText.equals("social studies")) {
for (int i = 0; i < RateSurvey.social.length-1;i++) {
if (newCourse.equals(RateSurvey.social[i])) return survey[currentQuestion][i];
}
return 100;
}
只需在最后一次return 100;
之前删除else
return 100;
这意味着,对于所有无法通过巨大的if
语句处理的情况,都会发生这种情况。 可能是同一回事,但这只是使代码更清晰。
您需要在一个会引起错误的托架之后添加一个额外的托架。
以下没有任何编译错误:
public static int findNumber(String course, int currentQuestion) {
String newCourse = course.toLowerCase();
if (RateDriver.levelText.equals("math")) {
for (int i = 0; i < RateSurvey.math.length-1;i++) {
if (newCourse.equals(RateSurvey.math[i])) return survey[currentQuestion][i];
}
return 100;
}
else if (RateDriver.levelText.equals("science")) {
for (int i = 0; i < RateSurvey.science.length-1;i++) {
if (newCourse.equals(RateSurvey.science[i])) return survey[currentQuestion][i];
}
return 100;
}
else if (RateDriver.levelText.equals("english")) {
for (int i = 0; i < RateSurvey.english.length-1;i++) {
if (newCourse.equals(RateSurvey.english[i])) return survey[currentQuestion][i];
}
return 100;
}
else if (RateDriver.levelText.equals("social studies")) {
for (int i = 0; i < RateSurvey.social.length-1;i++) {
if (newCourse.equals(RateSurvey.social[i])) return survey[currentQuestion][i];
}
}
else if (RateDriver.levelText.equals("art")) {
for (int i = 0; i < RateSurvey.art.length-1;i++) {
if (newCourse.equals(RateSurvey.art[i])) return survey[currentQuestion][i];
}
return 100;
}
else if (RateDriver.levelText.equals("pe")) {
for (int i = 0; i < RateSurvey.pe.length-1;i++) {
if (newCourse.equals(RateSurvey.pe[i])) return survey[currentQuestion][i];
}
}
else if (RateDriver.levelText.equals("chinese")) {
for (int i = 0; i < RateSurvey.chinese.length-1;i++) {
if (newCourse.equals(RateSurvey.chinese[i])) return survey[currentQuestion][i];
}
}
else if (RateDriver.levelText.equals("japanese")) {
for (int i = 0; i < RateSurvey.japanese.length-1;i++) {
if (newCourse.equals(RateSurvey.japanese[i])) return survey[currentQuestion][i];
}
return 100;
}
else if (RateDriver.levelText.equals("french")) {
for (int i = 0; i < RateSurvey.french.length-1;i++) {
if (newCourse.equals(RateSurvey.french[i])) return survey[currentQuestion][i];
}
return 100;
}
else if (RateDriver.levelText.equals("spanish")) {
for (int i = 0; i < RateSurvey.spanish.length-1;i++) {
if (newCourse.equals(RateSurvey.spanish[i])) return survey[currentQuestion][i];
}
return 100;
}
else if (RateDriver.levelText.equals("hawaiian")) {
for (int i = 0; i < RateSurvey.hawaiian.length-1;i++) {
if (newCourse.equals(RateSurvey.hawaiian[i])) return survey[currentQuestion][i];
}
return 100;
}
else return 100;
}
} //ADDED
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.