2D阵列输出'来回'影响

时间:2014-09-14 21:05:59

标签: java multidimensional-array

我正在尝试制作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("");
                }
            }
        }
    }

我能做些什么来达到这个效果?

2 个答案:

答案 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