我有一个2D数组,其中包含连续的整数1-52以及四个0&#39。我还创建了一个count变量并将其设置为0;我想搜索数组,并且紧跟在13,26,39或52之后的每个0,增加count++
。
int count =0;
for(int i=0;i<4;i++) {
for(int j=0; j<4;j++) {
if((board[i][j]== 13 && board[i][j+1]==0) || (board[i][j]== 26 && board[i][j+1]==0) || (board[i][j]== 39 && board[i][j+1]==0) || (board[i][j]== 52 && board[i][j+1]==0) ) {
count++;
}
}
}
while(count <4) {
move(board);
}
我当前的代码运行正常,并会在这些数字后增加一个零的计数。但是我想增加count+=2
,如果我的四个号码中的一个后面跟着两个0&#39; increment +=3
代表三个0&{39} +=4
代表四个0&#39} ; S)
答案 0 :(得分:1)
只需制作另一种方法来计算零:
int count =0;
for(int i=0;i<4;i++) {
for(int j=0; j<4;j++) {
if((board[i][j]== 13 || board[i][j]== 26 || board[i][j]== 39 || board[i][j]== 52 ) && board[i][j+1]==0 ) {
count += numberOfZeros(i, j);
}
}
}
while(count <4) {
move(board);
}
}
public int numberOfZeros(int i, int j){
int aux = 0;
for(; j<4;j++) {
if(board[i][j] == 0){
aux++;
}
}
return aux;
}
PS:我编辑了你的if子句以使其更清晰
答案 1 :(得分:0)
您可以使用布尔值来检查您是否处于零的计数“条纹”:
int count = 0;
boolean onACountStreak = false;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (board[i][j] == 0) {
// Count only if this zero is found in a streak
if (onACountStreak) {
count++;
}
}
else if (board[i][j] % 13 == 0) {
onACountStreak = true;
}
else {
onACountStreak = false;
}
}
}
while (count < 4) {
move(board);
}