2012-11-02 67 views
-2

我有這個代碼的任務。當我編譯它,我得到JAVA Else沒有if?

grades.java:18: error: 'else' without 'if' 
    else 
    ^
1 error 

下面是代碼:

public class grades 
{ 
    public static void main (String [] args) 
    { 
     int gradeone=75; 
     int gradetwo=80; 
     int testscore= ((gradeone + gradetwo)/2); 
     char grade; 
     System.out.println("\n" + "your test score is" + testscore); 
     if(testscore >= 90) 
     grade='A'; 
    elseif(testscore >= 80); 
     grade='B'; 
    elseif(testscore >= 70); 
     grade='C'; 
    elseif(testscore >= 65); 
     grade='D'; 
    else 
     grade='F'; 
    } 
} 
+4

這不是Java的。沒有'elseif'這樣的東西。您將需要閱讀[使用if和else語句的介紹教程](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html)。請檢查鏈接,因爲它會解釋所有。 –

+1

此外,爲了強調,請注意,儘管條件後立即生效的分號是合法的,但它會導致您可能不期望的行爲 - 即條件將被視爲「空」(即 - 如果有半-colon在最後一個'else'後面,'grade'會被設置爲''F'' –

+0

「elseif」與Java無關。有人試圖在Java或C中採用這個概念。但它只是危險的構造「其他如果」沒有任何大括號之間......導致頭痛維護代碼 – user1697575

回答

4

正如其他人已經提到的語法是否則如果你的代碼變得相同。

此外,我強烈建議你堅持傳統的編碼風格,直到你對自己的技能更加自信。 A)現在,使用塊和語句時使用括號語法。您的代碼將更具可讀性,您將能夠更輕鬆地識別語法錯誤。儘管在技術上不需要,但您將會面臨挑戰,試圖確定沒有大括號的局部變量和方法範圍。

public static void main(String[] args) { 
    int gradeOne = 75, gradeTwo = 80, testScore = ((gradeOne + gradeTwo)/2); 
    char grade; 

    if(testScore >= 90) { 
     grade = 'A'; 
    } else if(testScore >= 80) { 
     grade = 'B'; 
    } else if(testScore >= 70) { 
     grade = 'C'; 
    } else if(testScore >= 65) { 
     grade = 'D'; 
    } else { 
     grade = 'F'; 
    } 
    System.out.println("\n" + "your test score is: " + testScore); 
} 

B)當你不確定的語法參考JLS答案...

1

else if後刪除分號。 這種錯誤的發生是因爲空語句的,它將執行分號,如果該條件滿足,則W執行其他代碼(grade = 'B';)/ O任何評價,這將分開的else

if
+1

有一點點比這更錯誤 –

2

else ifelseif的內聯,你不應該在else if行的末尾有;

1

Java沒有運營商elseif。您必須改寫else if。所以,java編譯器會與您的代碼混淆,並且找不到與您的else相關的if

0

將「else if」替換爲elseif並刪除if表達式後面的逗號。心靈的空間 - 然後如下其完美運行:)

public class check { 
    public static void main (String [] 
     int gradeone=75; 
     int gradetwo=80; 
     int testscore= ((gradeone + gradetwo)/2); 
     char grade; 
     System.out.println("\n" + "your test score is" + testscore); 
     if(testscore >= 90) 
      grade='A'; 
     else if(testscore >= 80) 
      grade='B'; 
     else if(testscore >= 70) 
      grade='C'; 
     else if(testscore >= 65) 
      grade='D'; 
     else 
      grade='F';  
} 
+0

我必須說的代碼與「其他如果」很難閱讀,理解和維護,我會堅持使用經典的大括號結構if(){} else {} – user1697575