2016-06-16 4 views
0

Я начинаю java, и я работаю над циклом for и while. Я понимаю, как они работают, но я не мог понять, как преобразовать из цикла for в цикл while.For loop convert While loop

for(int row=rowIndex+1; row<this.getMaxRows(); row++){ 
    if(board[row][colIndex]==board[rowIndex][colIndex] && row!=rowIndex) 
    { 
     this.setBoardCell(row, colIndex, BoardCell.EMPTY); 
     score++; 
    } 
    else{ 
     break; 
    } 
} 
+1

См вопросы, связанные с справа -> – shoover

+0

Вот еще один пример для ссылки: http://stackoverflow.com/questions/19917164/convert-a-for-loop-to-a-while-loop –

+0

Странно, никто не спрашивал об этом раньше, но, почему ты хочешь сделать это снова? –

ответ

6

Цикл for - это всего лишь цикл while с объявлением переменной и утверждение, которое выполняется в конце.

Так что:

for(int row=rowIndex+1; row<this.getMaxRows(); row++){ 
    //body of the loop goes here 
} 

примерно эквивалентно следующему:

int row = rowIndex +1; 
while (row < this.getMaxRows()){ 

    //body of the loop goes here 

    row++; 
} 

Единственное отличие в том, что переменная row теперь могут быть доступны за пределами while -loop. Если вы не хотите, чтобы быть в состоянии сделать это, вы можете использовать другой блок вокруг:

{ 
    int row = rowIndex +1; 
    while (row < this.getMaxRows()){ 

     //body of the loop goes here 

     row++; 
    } 
} 
//can't access row here. 
+0

* «получает» правильное написание. Две приведенные петли являются приблизительно эквивалентными, а не точно эквивалентными. Область «строка» в цикле «for» представляет собой только цикл; для цикла «while» это весь блок, в котором сидит цикл. –

+0

Хорошая точка! изм. –

0

Первая часть для цикла является инициализация, то проверка, то приращение. Итак:

int row=rowIndex+1; //first part 
while(row<this.getMaxRows())//second part { 
     if(board[row][colIndex]==board[rowIndex][colIndex] && row!=rowIndex) { 
      score++; 
     else 
      break; 
     } 
    row++;//third part 
} 
0

Ваш вопрос является неполным, но в соответствии с информацией, которую вы дали, это то, что вы должны иметь:

int row=rowIndex+1; 
while((board[row][colIndex]==board[rowIndex][colIndex] && row!=rowIndex)){ 
    this.setBoardCell(row, colIndex, BoardCell.EMPTY); 
    score++; 
    row++; 
} 
0

Я думаю, что это будет работать

while(row < this.getMaxRows()) { 
    if (board[row][colIndex] == board[rowIndex][colIndex] && row != rowIndex) { 
     this.setBoardCell(row, colIndex, BoardCell.EMPTY); 
     score++; 
     row++; 
    } 
    else { 
     break; 
    } 
}