Java-在数组中搜索尾随0

时间:2017-10-11 12:03:44

标签: java for-loop

我有一个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)

2 个答案:

答案 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);
}