2015-12-08 4 views
1

Мне интересно, можно ли пропустить мимо цикла while или даже выйти из метода на полпути через него, если выполняются определенные условия? Вот пример того, что я имею в виду (все работает в этом)by pass do while loop

public void loanBook() { 
      Scanner input = new Scanner(System.in); 
      boolean successful = false; 
      boolean bookExists = false; 
      boolean memberIDExists = false; 
      boolean memberCurrentlyLoaningBook = false; 
      int memberID = 0; 
      System.out.println("You must be a member of the library to loan out a book"); 
      do { 
       System.out.println("\nPlease enter your memberID (Press 9 to exit)"); 
int bookID = input.nextInt(); 
       input.nextLine(); 
       if (bookID == 9) { 
        successful = true; 
       } 
       memberID = input.nextInt(); 
       for (int i = 0; i < members.size(); i++) { 
        if (memberID == members.get(i).getMemberID()) { 
         memberIDExists=true; 
         if(members.get(i).isCurrentlyLoaningBook()==false){ 
          successful = true; 
          memberCurrentlyLoaningBook=true; 
         } 
        } 
       } 

       if(!memberCurrentlyLoaningBook){ 
        System.out.println("This member is currently loaning a book"); 
       } 

       if (!memberIDExists) { 
        System.out.println("This member ID does not exist"); 
       } 

      } while (successful == false); 

EDIT делать в то время как петли, которые находятся в том же методе

сделать {эти другие делают в то время как петли после этого первого и сделать другие вещи } while(); (Я не включил то, что они делают, так как оно слишком занято do {много места) } while();

У меня есть опция для выхода в главное меню, но после этого у меня также есть цикл while, поэтому всякий раз, когда я вхожу 9, он просто выходит из цикла while to while и переходит к следующему, есть во всяком случае, что я могу пропустить все, что происходит, делая петли после нажатия 9 или даже выйти из метода?

+0

Использовать продолжение; пропустить эту итерацию цикла. и перерыв; для выхода из остальной части цикла. –

+0

Почему input.nextLine() вызывается снова после bookID? –

+0

Если вы хотите пропустить do while и продолжить выполнение после выполнения определенного условия, используйте CONTINUE, если вы хотите выйти из метода, используйте RETURN –

ответ

-1

Попробуйте это, я добавил перерыв; когда пользователь вводит «9» в качестве входа. Затем он выйдет из цикла do while.

  do { 
       System.out.println("\nPlease enter your memberID (Press 9 to exit)"); 
       int bookID = input.nextInt(); 
       input.nextLine(); 
       if (bookID == 9) { 
        successful = true; 
        break; 
       } 

EDIT:

Да Проверить на следующий цикл, добавить условие с этой петлей

loop(your original condition && !successful) 
{ 
} 

EDIT 2: выйти из цикла и избегайте других методов while, но вы можете просто вернуться; Он вернет контроль над программой, с помощью которой был вызван этот метод.

do { 
        System.out.println("\nPlease enter your memberID (Press      9 to exit)"); 
        int bookID = input.nextInt(); 
        input.nextLine(); 
        if (bookID == 9) { 
         successful = true; 
         return; 
        } 
+0

, а что делать дальше в цикле while? – Rehman

+0

Что вы имеете в виду? Я могу только видеть, как это делают. –

+0

«но у меня также есть цикл while после этого» – Rehman

0

В вашем случае continue или break может быть полезным. Но если вы хотите выйти из метода, вы можете просто сделать это с помощью return.