繁体   English   中英

带循环的缺少返回语句错误-JAVA

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM