感谢您抽出宝贵时间阅读,
我有一个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;
}
答案 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;
}
或者更好的方法是避免在循环中创建col
和row
的新实例;
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]);
}
}