小困惑,为什么这不工作可以用一点点帮助,我想所有的值设置为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