2014-07-15 128 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); 
}