2015-02-11 70 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; 
    } 
}