JAVA中一个二维数组若有一行元素全部为一,则把这行元素全部变为0,怎么表示?
时间: 2024-05-01 11:17:28 浏览: 64
可以使用双重循环遍历二维数组,找到每一行元素是否全部为1,如果是则将这一行的元素全部赋值为0。具体代码实现如下:
```
int[][] arr = {{1,1,1},{0,1,1},{1,1,0}};
for(int i=0;i<arr.length;i++){
boolean allOne=true;
for(int j=0;j<arr[i].length;j++){
if(arr[i][j]!=1){
allOne=false;
break;
}
}
if(allOne){
for(int k=0;k<arr[i].length;k++){
arr[i][k]=0;
}
}
}
```
上述代码中,首先定义一个二维数组arr,然后使用双重循环遍历arr的每一个元素。在内层循环中,判断当前行中的每个元素是否都为1,如果不是,则将allOne标记为false。最后在外层循环中,判断当前行是否全部为1,如果是,则将当前行的元素全部赋值为0。
相关问题
JAVA中一个二维数组若有一行元素全部为一,则把这行元素消失,并将该数组的每行元素变为下一行元素。第一行元素则全变为0,怎么表示?
可以使用以下代码实现该功能:
```java
// 假设二维数组名为array
for(int i = 0; i < array.length; i++) {
boolean allOnes = true;
for(int j = 0; j < array[i].length; j++) {
if(array[i][j] != 1) {
allOnes = false;
break;
}
}
if(allOnes) {
// 将该行元素消失
for(int j = i; j < array.length-1; j++) {
array[j] = array[j+1];
}
array[array.length-1] = new int[array[0].length];
// 将该数组的每行元素变为下一行元素
for(int j = array.length-1; j > 0; j--) {
array[j] = array[j-1];
}
array[0] = new int[array[0].length];
break;
}
}
// 将第一行元素全部变为0
for(int j = 0; j < array[0].length; j++) {
array[0][j] = 0;
}
```
当然,上面的代码只是一种实现方式,可能还有更简单的实现方式。
JAVA中如果一个二维数组的一行元素全部为1,就把这行元素消失,每消失一行元素就把每行元素变为下一行元素。每消失一行元素就把第一行元素全变为0怎么表示?
可以使用如下的 Java 代码表示:
int[][] array = new int[n][m]; // n 表示数组的行数,m 表示数组的列数
int count = 0; // 表示消失的行数
for (int i = 0; i < n; i++) {
boolean flag = true; // 标记一行中的元素是否全部为 1
for (int j = 0; j < m; j++) {
if (array[i][j] != 1) {
flag = false;
break;
}
}
if (flag) { // 如果一行中的元素全部为 1
count++; // 消失的行数加 1
for (int j = 0; j < m; j++) {
array[i][j] = 0; // 将这一行的元素全部变为 0
}
}
}
for (int i = 0; i < count; i++) {
for (int j = 0; j < m; j++) {
if (i == count - 1) {
array[i][j] = 0; // 最后一行元素全部变为 0
} else {
array[i][j] = array[i + 1][j]; // 前几行的元素都变为下一行的元素
}
}
}
阅读全文