我有一个这样的数组:
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];
}
}
}
}}
程序仍然出错,真的我不知道了,有人可以帮助我吗?
答案 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
的大小。
重新思考你对变量的使用。尝试使用四个变量:srcX
,srcY
,dstX
,dstY
。
然后将dstX
/ dstY
(无论您想要用于哪些行)增加两次:在两个内部循环之间和外部循环的末尾,以及匹配的src_
。
答案 2 :(得分:0)
如果将静态int a,b和j放在方法中(然后删除静态),则可以调试程序并查看变量。我一直试图解决它5分钟,我已经发现了几个小错误。尝试调试它,如果再次卡住,请告诉我们。