我试图更改数组的数量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;
}