小困惑,爲什麼這不工作可以用一點點幫助,我想所有的值設置爲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;
}
}
小困惑,爲什麼這不工作可以用一點點幫助,我想所有的值設置爲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;
}
}
你必須確保你迭代在您的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;
}
}
編輯:您的代碼應該仍然工作,但對於約定你應該還是可能做到這一點。
這個答案是正確的,但在數組大小爲4x4的問題中,所以'seatArray [x] .length'與'seatArray.length'相同。 – 2015-02-11 15:59:03
@DimaMaligin這很有趣,你是對的。我只是認爲這是錯誤,因爲我提供的代碼適合我! – HavelTheGreat 2015-02-11 16:04:53
您實際上不需要明確設置任何值。
原始boolean
默認爲false
。
因此:
boolean[][] seatArray = new boolean[4][4];
System.out.println(seatArray[0][1]);
輸出
false
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;
}
}
Your co德應該工作,但這裏是填充二維數組另一種解決方案:
boolean[][] b = new boolean[4][4];
for (int i = 0; i < b.length; i++)
Arrays.fill(b[i], false);
如果你已經給定數組的大小不變,避免使用.length
和使用常量。
for(int x = 0; x < 4; x++){for(int y = 0; y < 4; y++){ ... ... }}
使多維數組迭代的另一種方法是這樣的。
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;
}
}
什麼是不工作? – Hoopje 2015-02-11 15:53:26
(順便說一下,默認值已經是false了) – 2015-02-11 15:54:50
雖然下面Elizion的回答很好,但我在代碼中找不到問題。什麼樣的行爲不像預期的那樣? – Codor 2015-02-11 15:57:08