2014-09-03 3 views
-3

Мой компилятор ест это:сделать в то время как цикл с условием в колонтитулы

do while (condition1) { 
     // do something 
    } while (condition2); 

Oracle прямо не говорят, что это возможно http://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html, но мой компилятор принимает два условия. Это действительно работает или есть причина, по которой я не могу этого сделать?

Конструкция имеет прекрасный смысл, так как часто у нас есть два условия, как счетчик и объект, где только одно из этих условий необходимо сразу проверить при вводе в цикл.

Я знаю, что могу использовать инструкцию if и break; - Я просто хотел узнать, есть ли причина, по которой я не должен использовать два критерия.

+2

Это не двойное условие 'while', это два отдельных цикла' while'. – BackSlash

+0

@Aeshang Синтаксис отлично подходит – BackSlash

ответ

4

То, что вы есть

do { 
    while (condition1) { 
    // do something 
    } 
} while (condition2); 

Так do something выполняется повторно до тех пор, как condition1 держится, а затем весь цикл запускается снова, condition2 держит.

0

почему бы не сделать:

if(condition1) { 
    do { 
    // your code here 
    } while (condition1 && condition2) 
} 

не большой поклонник вашего двойного состояния, потому что это сбивает с толку

4

Oracle прямо не говорят, что это возможно

В самом деле, невозможно.

Ваш пример не является двойным критерием while.

Это переводится так:

do { 
    while (condition1) { 
     // do something 
    } 
} while (condition2); 
0

Этот код работает на самом деле, Java-компилятор запускает его без ошибок и исключений.

Логика за ней - эти петли вложены. Цикл while вложен в do-while.

и здесь java-компилятор принимает цикл while внутри тела do-while как просто оператор одной строки, который может быть записан без использования между двумя фигурными скобками.

эквивалентно

for(int i=0; i<10; i++) 
      for(int j = 0 ; j<10; j++){ 
        //statements; 
      } 

или

 while(condition) 
      for(int j = 0 ; j<10; j++){ 
        //statements; 
      } 

в данной кодовой конструкции паре скобок делает тело в то время цикла, вместо того, чтобы тело внешней сделай в то время цикла, как и в течение конструкции петли пара брекетов создает тело внутреннего цикла.

 do while (condition1) { 
       // do something 
       } while (condition2); 

это действительная конструкция кода.