2013-02-21 49 views
0

我試圖在[5] [4]數組內更改數組的數目2次並且只有2次。更改數組元素的值X次數無需全部啓動數組

所以說我只想改變= 0到= 1的前2個元素,然後退出循環。因此元素[0] = 1,[1] = 1,然後[2] = 0,[3] = 0.然後,我想將變化元素[2]和[3]添加到1,但將元素[0]和[1] = 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

我知道你是想找到一個2維數組,它是0的兩個第一元素,並將其更改爲1

這是很簡單的,你建兩個嵌套了該瀏覽循環通過元素逐一:

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

(使用數組的length屬性有助於使你的代碼通用)

那麼你應該比較前夕RY時間currentValue 0。如果比較結果爲真,那麼元素更改爲1

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

但是,你必須爲你修改了兩個元素儘快停止。爲此,您必須在代碼中使用類似count的變量。

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

當計數等於numPassengers時,您必須走出兩個循環。您可以使用標記break語句來完成它(一個簡單的突破只會讓你從內​​循環):

第一for前:

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

再經過count++

  count ++; 
      if (count == numPassengers) { 
       break outerloop; 
      } 
+0

謝謝,這幫了我很多。我改變了一下代碼,所以我不必使用break。 – Adam 2013-02-21 19:30:23