2014-09-13 173 views
0

無法理解我在做什麼錯誤:(我想用空格填充我的數組,但接收到錯誤 線程「main」中的異常java.lang.Error:未解決的編譯問題: j無法解析爲一個變量二維數組java

at Field.space(Field.java:11) 
at Main.main(Main.java:6) 

這是我簡單的代碼:

public class Main { 

    public static void main (String[] args){ 
     Field field = new Field(); 
     field.space(); 
    } 
} 


public class Field { 
    private static final int ArraySize = 3; 
    private char spacesymbol = ' '; 
    private char[][] array = new char [ArraySize][ArraySize]; 

    public void space() { 
     for (int i=0; i<ArraySize; i++){ 
      for (int j=0; j<ArraySize; j++) 
       array[i][j]= spacesymbol; 
      System.out.println("[" + array[i][j] + "]"); 
     } 

    } 
} 

回答

0

你忘了內部括號for循環:

for (int i=0; i<ArraySize; i++){ 
    for (int j=0; j<ArraySize; j++) 
     array[i][j]= spacesymbol; 
    System.out.println("[" + array[i][j] + "]"); // 'j' who? 
} 

沒有他們只會執行下一行後(array[i][j]= spacesymbol;),當我們做System.out.println("[" + array[i][j] + "]");也不會知道我們是哪個j談論。

所以新的代碼將看起來像這樣:

for (int i=0; i<ArraySize; i++){ 
    for (int j=0; j<ArraySize; j++){ 
     array[i][j]= spacesymbol; 
     System.out.println("[" + array[i][j] + "]"); 
    } 
} 
2

你忘了括號的第二個for循環,將其更改爲:

for (int j=0; j<ArraySize; j++) { 
    array[i][j]= spacesymbol; 
    System.out.println("[" + array[i][j] + "]"); 
} 
0

您在第二次for循環後錯過了大括號。

public void space() { 
    for (int i=0; i<ArraySize; i++){ 
    for (int j=0; j<ArraySize; j++) { 
     array[i][j]= spacesymbol; 
     System.out.println("[" + array[i][j] + "]"); 
    } 
    } 
} 
2

你的第二個for循環不使用大括號,所以它不僅包括緊隨for語句中的第一個語句。所以只有線

array[i][j]= spacesymbol; 

實際上是變量j的範圍。之後的行在for循環之外,因此變量j不再存在。你的代碼更改爲這個來修復這個錯誤:

for (int i=0; i<ArraySize; i++){ 
    for (int j=0; j<ArraySize; j++) { 
     array[i][j]= spacesymbol; 
     System.out.println("[" + array[i][j] + "]"); 
    } 
} 

出於這個原因,我總是建議使用大括號任何for塊。

0

後的第二個內部for循環你缺少括號