初始化java的变量错误

时间:2014-07-15 21:12:07

标签: 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);
                                                       ^

4 个答案:

答案 0 :(得分: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 {
    ...
}

答案 1 :(得分:2)

有些情况grade未初始化。如果grade101,该怎么办?如果是-1怎么办?在这种情况下,else块不会初始化grade,并且Java不会允许在使用本地变量之前未初始化它的可能情况。

您必须显式初始化它,因此在声明它时将其初始化为某种东西。

char grade = 'Z';

最后,只有在'Z'

更改成绩时才打印成绩
if (grade != 'Z') {
   System.out.println("Your grade is " + grade);
}

答案 2 :(得分:0)

char grade = '0';放在开头。

也使用括号,因为你使用了很多if语句。一段时间后,它们会变得非常混乱。

答案 3 :(得分:0)

默认情况下不会初始化局部变量,因此您必须为它们提供初始值。

char grade = 'Z';

仅当您在代码中找到变量无法获得值的点时才适用。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html