如何在同一级别的if语句中分配/访问变量

时间:2015-04-14 19:44:07

标签: java

所以,我需要访问我在最后一个if语句的if语句中指定的变量。我是Java初学者,感谢任何帮助:)

这是我的编译错误。

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
The local variable a may not have been initialized
The local variable b may not have been initialized
The local variable c may not have been initialized
The local variable d may not have been initialized
The local variable e may not have been initialized

这是我的代码。我需要根据已经传递的迭代次数来分配某个变量,并在最后一次迭代后分配变量后访问这些变量。

public static void main(String[] args){
    String a;
    String b;
    String c;
    String d;
    String e;
    Scanner s = new Scanner(System.in);

for( int loop = 1; loop <= 6; loop++ ){
    if(loop == 1){
        System.out.println("Please input a grade.");
        a = s.nextLine();
        System.out.println("You said,"+a);
        continue;
        }
    if(loop == 2){
        System.out.println("Please input a grade.");;
        b = s.nextLine();
        System.out.println("You said,"+b);
        continue;
    }
    if(loop == 3){
        System.out.println("Please input a grade.");
        c = s.nextLine();
        System.out.println("You said," +c);
        continue;
    }
    if(loop == 4){
        System.out.println("Please input a grade.");
        d = s.nextLine();
        System.out.println("You said," +d);
        continue;
    }
    if(loop == 5){
        System.out.println("Please input a grade.");
        e = s.nextLine();
        System.out.println("You said," +e);
        continue;
    }
    if(loop == 6){
        System.out.println("Grade 1."+a);
        System.out.println("Grade 1."+b);
        System.out.println("Grade 1."+c);
        System.out.println("Grade 1."+d);
        System.out.println("Grade 1."+e);
    }


    }
}

3 个答案:

答案 0 :(得分:3)

您正在声明然后尝试访问String。如果您要使用变量,则必须首先初始化它们。你通过这样做声明它们:

String a;

你还需要像这样初始化它们:

String a = "";

在尝试访问它们之前初始化它们,否则Java的编译器将不满意!

答案 1 :(得分:3)

实际上,在这种情况下正确的做法是删除循环和if语句。它们是多余的。如果你没有多次在其中运行任何操作,则不需要进行循环:

String a;
String b;
String c;
String d;
String e;

System.out.println("Please input a grade.");
a = s.nextLine();
System.out.println("You said,"+a);

System.out.println("Please input a grade.");;
b = s.nextLine();
System.out.println("You said,"+b);

System.out.println("Please input a grade.");
c = s.nextLine();
System.out.println("You said," +c);

System.out.println("Please input a grade.");
d = s.nextLine();
System.out.println("You said," +d);

System.out.println("Please input a grade.");
e = s.nextLine();
System.out.println("You said," +e);

System.out.println("Grade 1."+a);
System.out.println("Grade 1."+b);
System.out.println("Grade 1."+c);
System.out.println("Grade 1."+d);
System.out.println("Grade 1."+e);

这将为完全提供相同的控制流,但现在编译器可以看到所有变量都必须已初始化。

循环用于重复运行程序逻辑的某些部分,但差别很小。实际上,如果您使用的是数组而不是变量,那么有一个循环是有意义的:

String[] grades = new String[6];

for ( int loop = 0; loop < 6; loop++ ) {

    System.out.println("Please input a grade.");
    grades[loop] = s.nextLine();
    System.out.println("You said," + grades[loop]);

}

for ( int loop = 0; loop < 6; loop++ ) {
    System.out.println( "Grade " + ( loop + 1 ) + ". " + grades[loop] );
}

因此,我们不是一次写下所有这些行,而是只编写一次,改变取决于循环变量。这就是为什么做的循环。

答案 2 :(得分:2)

只需在创建字符串时执行此操作:

String a = "";
String b = "";
String c = "";
String d = "";
String e = "";