以特定方式移动数组中的元素

时间:2015-05-21 23:35:31

标签: java multidimensional-array

这个方法的目标是我有一个填充了Bubble对象的2D数组,我试图将数组中没有颜色值为0的所有内容都移动,并将颜色0保留在列的顶部。
目前,它将每个点变成一个值为0的气泡。我认为它是一个小错误,我错过了但我现在已经尝试了3天而且无法看到我的问题。 *澄清:myBoard初始化为新的Bubble [15] [15]; Bubble构造函数是(int color,int row,int col)

public void shiftBoardDown() {

    int currentC = 0;

    while(currentC < 15){
        Bubble [] temp = new Bubble [15];
        int hits = 14;

        for(int i = 14; i <= 0; i--){
            if(this.myBoard[i][currentC].getColor() != 0){
                temp[hits] = new Bubble(this.myBoard[i][currentC].getColor(), hits, currentC);
                hits--;
            }
        }

        while(hits >= 0){
            temp[hits] = new Bubble(0, hits, currentC);
            hits--;
        }
        for(int r = 0; r < 15; r++){
            this.myBoard[r][currentC] = temp[r];
        }
        currentC++;
    }

}

1 个答案:

答案 0 :(得分:1)

我在猜测

if(this.myBoard[i][currentC].getColor() != 0)

永远不会被触发,并且使用hits==14输入以下循环。

while(hits >= 0){
    temp[hits] = new Bubble(0, hits, currentC);
    hits--;
}

在这种情况下hits从14运行到0,包括将temp中的相应条目设置为颜色0 Bubble

在第一个循环中的`hits--'上设置一个断点,以确认它是否被触发。

我无法分辨,因为我可以了解this.myBoard[i]进入函数的状态。