Java:2d数组列和行

时间:2011-09-06 02:10:53

标签: java

感谢您抽出宝贵时间阅读,

我有一个2d矩阵的布尔值,我试图将每个边界值更改为false。我有这个工作的顶部和最左边的边界,但似乎无法找出底部和最右边的工作代码,任何帮助将不胜感激,这些是上部和最左侧的代码:

//将边框值更改为false

    for (int row = 0; row <matrix.length; row++) {
        int col = 0;
        matrix[row][col] = false;
    }

    for (int col = 0; col <matrix.length; col++) {
        int row = 0;
        matrix[row][col] = false;
    }

3 个答案:

答案 0 :(得分:5)

将行和col值设为最后一个值而不是零;

为最后一栏:

for (int row = 0; row <matrix.length; row++) {
    int col = matrix[0].length-1;
    matrix[row][col] = false;
}

和最后一行:

for (int col = 0; col <matrix[0].length; col++) { 
    int row = matrix.length-1;
    matrix[row][col] = false;
}

或者更好的方法是避免在循环中创建colrow的新实例;

for (int row = 0; row <matrix.length; row++) {
    matrix[row][matrix[0].length-1] = false;
}
for (int col = 0; col <matrix[0].length; col++) { 
    matrix[row][matrix.length-1] = false;
}

对于col,最后一个值必须是行的长度,所以我写matrix[0].length它也可能是任何其他合适的数字而不是0,但超出范围。

答案 1 :(得分:0)

嗯,我能想到的最简单的方法就是将row设置为循环中的行的最大值(每次看起来都是matrix.length - 1)。所以,例如:

for (int row = 0; row < matrix.length; row++) {
    matrix[row][0] = false;
    matrix[row][matrix.length - 1] = false;
}

并为您的列做同样的事情。

答案 2 :(得分:0)

或类似的东西;

 for(int c=0;c<matrix.length;c++){
              System.out.println("");
              for(int r=0;r<matrix[0].length;r++){
                if(c==0||r==0||c==matrix.length-1||r==matrix[0].length-1){
                    matrix[c][r] = false;
                }else{
                    matrix[c][r] = true;
                }
                System.out.print(" " + matrix[c][r]);
              }
          }