2015-04-14 53 views
0

因此,我需要訪問我在最後一條if語句中的if語句中分配的變量。我是一個初學者在Java和任何幫助表示讚賞:)如何在同一級別if語句中分配/訪問變量

這是我的編譯錯誤。

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); 
    } 


    } 
} 
+0

'String a =「」;'應該這樣做。 – pzaenger

回答

3

您聲明,然後試圖訪問字符串。如果你打算使用變量,你必須首先初始化它們。你做這個聲明它們:

String a; 

您還需要初始化它們是這樣的:

String a = ""; 

初始化他們試圖訪問他們或Java的編譯器不會快樂之前!

2

只是這樣做,當你創建你的字符串:

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

非常感謝! – Zaedeor

+1

不客氣,很高興我可以幫忙。 @Miguel J很好地解釋了爲什麼這會起作用。一定要接受答案! – CubeJockey

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]); 
} 

因此,而不是寫那些行的六倍,我們寫他們只有一次,有更改,取決於循環變量。這就是循環所做的。

+0

哦!這非常有用:)我知道我可以縮短它,但我還沒有完全理解數組。 (我在10年級) – Zaedeor