在不重新启动数组的情况下更改数组元素的值X次



我试图更改数组的数量2次,在[5][4]数组中仅更改2次。

比方说,我只想将前面两个元素从=0更改为=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++;
                }
            }
        }
    }

我知道您想在二维数组中找到第一个为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进行比较。如果比较结果为true,则将元素更改为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;
            }

相关内容

最新更新