2015-02-11 99 views
0

小困惑,爲什麼這不工作可以用一點點幫助,我想所有的值設置爲false:初始化2-d陣列中的Java

boolean[][] seatArray = new boolean[4][4]; 

for(int x = 0; x < seatArray.length; x++){ 
    for(int y = 0; y < seatArray.length; y++){ 
     seatArray[x][y] = false; 
    } 
} 
+0

什麼是不工作? – Hoopje 2015-02-11 15:53:26

+3

(順便說一下,默認值已經是false了) – 2015-02-11 15:54:50

+0

雖然下面Elizion的回答很好,但我在代碼中找不到問題。什麼樣的行爲不像預期的那樣? – Codor 2015-02-11 15:57:08

回答

1

你必須確保你迭代在您的for循環內的正確數組元素上設置每個值爲false。試試這個:

boolean[][] seatArray = new boolean[4][4]; 

    for(int x = 0; x < seatArray.length; x++){ 
     for(int y = 0; y < seatArray[x].length; y++){ 
      seatArray[x][y] = false; 
     } 
    } 

編輯:您的代碼應該仍然工作,但對於約定你應該還是可能做到這一點。

+0

這個答案是正確的,但在數組大小爲4x4的問題中,所以'seatArray [x] .length'與'seatArray.length'相同。 – 2015-02-11 15:59:03

+0

@DimaMaligin這很有趣,你是對的。我只是認爲這是錯誤,因爲我提供的代碼適合我! – HavelTheGreat 2015-02-11 16:04:53

0

您實際上不需要明確設置任何值。

原始boolean默認爲false

因此:

boolean[][] seatArray = new boolean[4][4]; 
System.out.println(seatArray[0][1]); 

輸出

false 
0

BY DEFAULTIFü初始化2D布爾數組它將包含值設置爲false 比方說你有一個二維數組作爲

boolean[][] seatArray=new boolean[4][4];//all the value will be false by default 
so it is a 4*4 matrix 

boolean[0] represents the the 1st row i.e Lets say it contains value like {true,true,true,true} if you need the value in individual cell you need to iterate 2 for each loop like 

    for (boolean[] rowData: seatArray){ 
       for(int cellData: rowData) 
       { 
System.out.printn("the indiviual data is" +cellData); 
       cellData=Boolean.false; 
       } 
      } 
0

Your co德應該工作,但這裏是填充二維數組另一種解決方案:

boolean[][] b = new boolean[4][4]; 

    for (int i = 0; i < b.length; i++) 
     Arrays.fill(b[i], false); 
-1

如果你已經給定數組的大小不變,避免使用.length和使用常量。

for(int x = 0; x < 4; x++){for(int y = 0; y < 4; y++){ ... ... }} 
0

使多維數組迭代的另一種方法是這樣的。

boolean[][] seatArray = new boolean[4][4]; 

//Foreach row in seatArray 
for(boolean[] arr : seatArray){ 
    for(int i = 0; i < arr.length; i ++){ 
     arr[i] = false; 
    } 
}