我正在尝试制作2D数组输出,以便每隔一行从右向左输出。
例如,正常输出看起来像这样:
0.5 0.62 0.35 0.6 0.5
0.45 0.62 0.25 0.25 0.13
0.65 0.85 0.2 0.2 0.8
但是从右到左输出每隔一行看起来像这样:
0.5 0.62 0.35 0.6 0.5
0.13 0.25 0.25 0.62 0.45
0.65 0.85 0.2 0.2 0.8
所以第二行从右到左输出。
到目前为止,这是我的代码:
int k = 0;
double[][] cd = new double[3][5];
while (k < gridArr.length){
for(int i = 0; i < cd.length; i++){
for(int j = 0; j < cd[i].length; j++){
cd[i][j] = (double) gridArr[k];
System.out.print(String.format("%-10s" ,cd[i][j]));
k++;
if(j == cd[1].length-1) {
System.out.println("");
}
}
}
}
我能做些什么来达到这个效果?
答案 0 :(得分:0)
尝试类似:
int k = 0;
double[][] cd = new double[3][5];
while (k < gridArr.length){
for(int i = 0; i < cd.length; i++){
if (i % 2 == 1) {
for(int j = 0; j < cd[i].length; j++){
cd[i][j] = (double) gridArr[k];
System.out.print(String.format("%-10s" ,cd[i][j]));
k++;
if(j == cd[1].length-1) {
System.out.println("");
}
}
} else {
for(int j = cd[i].length - 1; j >= 0; j--){
cd[i][j] = (double) gridArr[k];
System.out.print(String.format("%-10s" ,cd[i][j]));
k++;
if(j == cd[1].length-1) {
System.out.println("");
}
}
}
}
}
对于每一个奇怪的情况,事情就像以前一样发生,因为对于每一对情况,反转是for。
答案 1 :(得分:0)
喜欢这个?
我把它写成了单元测试类,但你明白了,我认为这很简单。
@Test
public void test2dArray() {
double[][] arr = {
{0.5, 0.62, 0.35, 0.6, 0.5},
{1, 2, 3, 4, 5},
{0.65, 0.85, 0.2, 0.2, 0.8},
{10, 20, 30, 40, 50},
{0.65, 0.85, 0.2, 0.2, 0.8},
{100, 200, 300, 400, 500},
};
for (int i = 0; i < arr.length; i++) {
if (i % 2 == 1) {
for (int j = arr[i].length - 1; j >= 0; j--)
System.out.printf("%-10s", arr[i][j]);
} else {
for (int j = 0; j < arr[i].length; j++)
System.out.printf("%-10s", arr[i][j]);
}
System.out.println("");
}
}
输出:
0.5 0.62 0.35 0.6 0.5
5.0 4.0 3.0 2.0 1.0
0.65 0.85 0.2 0.2 0.8
50.0 40.0 30.0 20.0 10.0
0.65 0.85 0.2 0.2 0.8
500.0 400.0 300.0 200.0 100.0