这个方法的目标是我有一个填充了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++;
}
}
答案 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]
进入函数的状态。