初始化变量并稍后在条件中更改它

时间:2014-02-14 03:27:57

标签: java variables initialization

我试图让let1初始化,同时仍然被我为av1设置的if条件操纵。

import java.util.Scanner;

public class School {
    public static void main(String args[]) {
        Scanner get=new Scanner(System.in);

        //Variables
        String Stud1, Stud2, Stud3, Stud4;
        int num1S1, num2S1, num3S1, num4S1;
        int num1S2, num2S2, num3S2, num4S2;
        int num1S3, num2S3, num3S3, num4S3;
        int num1S4, num2S4, num3S4, num4S4;
        double av1, av2, av3, av4;
        char let1,let2,let3,let4;

        //Input Student One
        System.out.println("Please enter name of first student:");
        Stud1=get.next();
        System.out.print("Integer grades from 1st to fourth grade:\n");
        num1S1=get.nextInt();
        num2S1=get.nextInt();
        num3S1=get.nextInt();
        num4S1=get.nextInt();

        //Computing Average
        av1= (num1S1+num2S1+num3S1+num4S1)/4.0;
        av2= (num1S2+num2S2+num3S2+num4S2)/4.0;
        av3= (num1S3+num2S3+num3S3+num4S3)/4.0;
        av4= (num1S4+num2S4+num3S4+num4S4)/4.0;

        //If Statements for letter grade
        if(av1<=50)
            let1='F';
        if(av1>=60 && av1<=69)
            let1='D';
        if(av1>=70 && av1<=79)
            let1='C';
        if(av1>=80 && av1<=89)
            let1='B';
        if(av1>=90)
            let1='A';
        //Output

        System.out.printf("Studnet Name Grades Average Letter Grade\n");
        System.out.printf("%s %1d %1d %1d %1d %1.2f %c \n",Stud1,num1S1,num2S1,num3S1,num4S1,av1,let1); 
    }
}

2 个答案:

答案 0 :(得分:0)

在let1

的声明声明下面尝试此操作
let1 = ' ';

答案 1 :(得分:0)

您可以在声明时将let1初始化为某个任意值。

char let1 = ' ',let2,let3,let4;

或者您可以将if结构更改为if-else结构。如果案例相互排斥,那么这种结构可能更有意义,他们可能就是在这种情况下。此外,如果您在let1语句中为else分配值,则编译器应停止抱怨未初始化的值。

示例:

if(av1<=50)
    let1='F';
else if(av1>=60 && av1<=69)
    let1='D';
/* Your other statements here */
else 
    let1 = 'A'; 

您可能也想检查一下条件。您的代码目前不处理平均成绩在51到59之间的情况。