0

我正在尝试将数组的数量更改 2 次,并且在 [5][4] 数组中仅更改 2 次。

所以说我只想将= 0的前2个元素更改为= 1,然后退出循环。所以元素[0] = 1,[1] = 1,然后[2] = 0,[3] = 0。然后我想将更改元素[2]和[3]添加到1,但留下元素[0]并且 [1] = 1。(这只是一维数组的示例)。

这仅适用于 5 行和 2 列,但我怎样才能在循环中执行此操作?例如,如果我有一个 [30][6] 数组,显然这不会有效。我试过用 for 循环来解决这个问题,但我就是想不出一个可行的方法。

int numPassengers = 2;
int count = 0;

while (count < numPassengers){

        if(array[0][1] == 0){
            array[0][1] = 1;
            count++;
        }
        else if(array[1][1] == 0){
            array[1][1] = 1;
            count++;
        }
        else if(array[2][1] == 0){
            array[2][1] = 1;
            count++;
        }
        else if(array[3][1] == 0){
            array[3][1] = 1;
            count++;
        }
        else if(array[4][1] == 0){
            array[4][1] = 1;
            count++;
        }
    }

稍微改了一下代码。

for(int i = 0; i < ROW; i++){
        for(int j = 1; j <= 2 ; j++){

            if( array[i][j] == 0){

                if(count < numPassengers){
                    array[i][j]++;
                    count++;
                }
            }

        }
    }
4

1 回答 1

0

我知道您想在二维数组中找到前两个为 0 的元素,并将它们更改为 1。

这很简单,您构建两个嵌套的 for 循环,逐个浏览元素:

for (int i=0; i<array.length; i++) {
    for (int j=0; j<array[i].length; j++) {
        int currentValue = array[i][j];
        // stuff
    }
}

(使用length数组的属性有助于使您的代码通用)

然后你每次都currentValue与0进行比较。如果比较为真,则将元素更改为1。

        if (currentValue == 0) {
            array[i][j] = 1;
        }

但是一旦你修改了两个元素,你就必须停下来。为此,您必须使用count代码中的变量。

        if (currentValue == 0) {
            array[i][j] = 1;
            count ++;
        }

当 count 等于 时numPassengers,你必须退出你的两个循环。您可以使用带标签的break语句来做到这一点(一个简单的中断只会让您脱离内部循环):

在第一个之前for

outerloop:
for (int i=0; i<array.length; i++) {

然后之后count++

            count ++;
            if (count == numPassengers) {
                break outerloop;
            }
于 2013-02-21T19:10:24.813 回答