空的二维数组a
应填充以下值:
1 8 9 16 17
2 7 10 15 18
3 6 11 14 19
4 5 12 13 20
我在弄清楚如何反转列的顺序方面遇到了很多麻烦。这是我得到的最接近的结果:
int [][] a = new int[4][5];
int count = 1;
for(int c = 0; c < a[0].length; c++) {
for(int r = 0; r < a.length; r++) {
a[r][c] = count;
count++;
if(r% 2 == 0 && c % 2 != 0) {
count = 20;
a[r][c] = 20;
count--;
}
}
}
最佳答案
您应该定义一个变量来定义每次迭代时要移动的方向,我将其命名为sign
。如果sign为正,则该列将向下填充,否则将向相反方向移动。
int [][] a = new int[4][5];
int count = 1;
int sign = 1;
for(int j = 0 ; j < 5 ; j++){
if(sign==1)
for(int i = 0 ; i < 4 ; i++){
a[i][j]=count;
count++;
}
else
for(int i = 3 ; i >=0 ; i--){
a[i][j]=count;
count++;
}
sign *= -1;
}
如果我们想打印数组,我们将拥有:
for(int i = 0 ; i < 4; i++){
for(int j = 0 ; j < 5; j++)
System.out.print(a[i][j]+"\t");
System.out.println();
}
结果输出为:
1 8 9 16 17
2 7 10 15 18
3 6 11 14 19
4 5 12 13 20
关于java - 如何交替二维数组中每隔一列的元素顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59996900/