2014-07-15 153 views
0

第一個;我是很新的編程...初始化java的變量錯誤

什麼,我試圖做的是有一個簡單的程序,根據您的標記,它計算你的成績,這是我現在所擁有的:

class Grade { 

public static void main(String[]args){ 


char grade; 


    int marks = 92; 

    if(marks<60) 
    grade = 'F' ; 

    else if(marks>61 && marks<69) 
    grade = 'D'; 

    else if(marks>70 && marks<79) 
    grade = 'C'; 

    else if(marks>80 && marks<89) 
    grade = 'B'; 

    else if(marks>90 && marks<99) 
    grade = 'A'; 

    else 
    System.out.println("Bogus Grade"); 


    System.out.println("Your grade is " + grade); 


} 


} 

(對於現在我只是在指定的代碼檔次,並在後來用戶輸入)

將努力在試圖編譯代碼,我得到這個錯誤:

Grade.Java:30: error: variable grade might not have been initialized 
        System.out.println("Your grade is" + grade); 
                ^
+0

您是否使用過Google? –

+0

將'marks'設置爲'60',你會看到問題。 'grade'變量需要設置爲'char grade ='I';'或類似的東西。然後修復你的if/else塊來處理分數(例如'<='而不是'<')。 – gpojd

回答

3

因爲它可能在所有的情況下獲得,並具有規格不進行設置。

設定在一開始就值等級:

char grade = 'Z'; 

還要確保所有情況下的照顧,和等級設置所有的時間。在最後的其他情況下,grade未被修改。你可以這樣做:

else { 
    System.out.println("Bogus Grade"); 
    grade = 'Z'; 
} 

此外,等於60,70,80,90和100標誌的值不會考慮。您應該將if行更改爲:

else if(marks>=60 && marks<69) 
... 
else if(marks>=70 && marks<79) 
... 
else if(marks>=80 && marks<89) 
... 
else if(marks>=90 && marks<=100) 
... 
else { 
    ... 
} 
+0

他們還需要修復70,80,90和100. – gpojd

+0

@gpojd是的,只是注意到。編輯我的答案。 – AntonH

0

char grade = '0';在開始。

由於您正在使用大量的if語句,因此還要使用括號。一段時間後他們會變得非常困惑。

2

有些情況下,grade未初始化。如果grade101?如果它是-1?在這種情況下,else塊不會初始化grade,並且Java不允許在使用本地變量之前初始化局部變量的情況。

你必須明確地初始化它,所以當你聲明它的時候將它初始化爲某些東西。

char grade = 'Z'; 

最後,只有當它是從'Z'改變打印等級:

if (grade != 'Z') { 
    System.out.println("Your grade is " + grade); 
}