2014-02-21 33 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