数组2维循环

时间:2011-11-26 09:54:40

标签: java arrays

我有一个这样的数组:

A =

10 11 12 13 14 15 16 0

17 18 19 20 21 0  0  0

22 23 24 25 26 27 28 0

然后我想将数组A转换为B,看起来像这个

B =

10 11 12 13 14 

15 16  0  0  0

17 18 19 20 21

22 23 24 25 26

27 28  0  0  0 

这就是我所做的:

 public class tesMapping {

    static int a [][]= new int [][]{{10,11,12,13,14,15,16,0},
                             {17,18,19,20,21,0,0,0},
                             {22,23,24,25,26,27,28,0}};
    static int b [][]=new int [5][5];
    static int j=0;

    public static void main (String args[]){
        for (int i=0;i<5;i++){
            for (j=0;j<5;j++)
                b[i][j]=a[i][j];
            int k=5;
            for (k=5;k<8;k++){
             if (a[i][k]!=0){
                 i++;
                 b[i][j]=a[i][k];         
            }
        }
    }
}}

程序仍然出错,真的我不知道了,有人可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

public static void main(String args[]) {
    int posBx = 0, posBy = 0;

    for (int posAx = 0; posAx < a.length; posAx++) {
        for (int posAy = 0; posAy < a[posAx].length; posAy++) {

            if (posBy == b[posBx].length) {
                posBy = 0;
                posBx++;
            }
            if (posBx == b.length) {
                posBx = 0;
                posBy++;
            }
            b[posBx][posBy++] = a[posAx][posAy];

        }

    }
}

表示a.length&lt; b.length个

答案 1 :(得分:0)

您的数组大小不匹配,您将i增加到超出b的大小。 重新思考你对变量的使用。尝试使用四个变量:srcXsrcYdstXdstY。 然后将dstX / dstY(无论您想要用于哪些行)增加两次:在两个内部循环之间和外部循环的末尾,以及匹配的src_

答案 2 :(得分:0)

如果将静态int a,b和j放在方法中(然后删除静态),则可以调试程序并查看变量。我一直试图解决它5分钟,我已经发现了几个小错误。尝试调试它,如果再次卡住,请告诉我们。