繁体   English   中英

Java:二维数组的列和行

[英]Java: 2d array columns and rows

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

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

//将border值更改为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;
    }

将row和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,但超出范围。

好吧,我能想到的最简单的方法就是通过循环将row设置为row的最大值(看起来是matrix.length - 1每次为matrix.length - 1 )。 因此,例如:

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

并对您的列进行相同操作。

或类似的东西;

 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]);
              }
          }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM