2014-02-21 35 views
0

我得到一个丢失的最后括号返回语句错误,我不知道为什么。这种方法基本上是采用与学生课程和当前调查问题相对应的字符串。外部if语句对应于主题(例如:数学,科学,英语......)。 for循环遍历数组,并将用户输入(“US History”)与数组列表中的字符串进行匹配。如果它们相等,则返回找到它的索引。否则,它继续for循环。该方法返回一个int,但仍然在最后一个括号上出现错误。请帮忙!丢失返回语句错误w/For循环 - JAVA

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 

回答

0

你需要添加一个额外的括号后,让你一个错误。

下没有得到任何编译错误:

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 
+0

感谢您再次输入整个代码。我可以确切地看到你改变了什么。 – apetranik

2

一些代码的部分不返回任何如果没有在返回的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; 
} 
+0

谢谢!那是有效的:D – apetranik

+0

你可能想考虑删除所有的100个回报,并且在他的回答中遵循约翰的建议。它会使代码更清洁。 – kabb

2

最后return 100;这意味着它会发生针对没有被巨大的if语句处理每一个案件之前就去掉else。 它可能是同一件事,但它只是使代码更清晰。

+0

谢谢 - 这也可以! – apetranik