2015-04-18 2 views
0

в приведенном ниже операторе if, если он ложный, он корректно печатает инструкцию else. "No order with this number exists, please create a new order.", и если это правда, он также правильно печатает первое утверждение, но за ним всегда следует инструкция else. Почему не заканчивается break; после первого, если будет напечатан случай?Почему случай переключения не ломается после первого, если печатается случай?

case(3):{ 
       System.out.println(""); 
      System.out.println("Please Enter The Order Number: "); 
      int orderno = input.nextInt(); 
      Iterator<Order> orderIterator3 = orders.getIterator(); 
      Order currentorder; 
      String itemRemoved = null; 
      StackInterface <String> newItems = new ArrayStack<String>(); 
      while (orderIterator3.hasNext()) { //iterate through the list until an order with a matching order no is found 
       currentorder = orderIterator3.next(); 
      if(currentorder.getNumber() == orderno) { //access the Items in the list by their order number 
       newItems = currentorder.getItems(); //Copy the existing items into a new stack 
       if (!newItems.isEmpty()) 
       itemRemoved = newItems.pop(); 
       System.out.println("The last item: " + itemRemoved + "\n was successfully removed from your order!"); break; 
       }//End if 

      }//End While 
      System.out.println("No order with this number exists, please create a new order."); break; 
      }// End Case 3 
+0

Поскольку у вас нет инструкции 'break'. –

+0

Он прерывает закрытие while() и поэтому не может сломать переключатель. –

+1

'System.out.println (« Последний элемент: «+ itemRemoved +» \ n был удален из вашего заказа! »); ломать; ' helloworld

ответ

3

При разрыве внутри while-loop, вы будете ломать while-loop, не case.

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

boolean shouldBreak = false; 
while(...) { 
    if(...) { 
    shouldBreak = true; 
    break; // break out of the while. 
    } 
} 
if(shouldBreak) { 
    break; // break out of the switch/case. 
} 
+0

Работал !! Спасибо! :) – helloworld

0

Вы не можете сломать случай изнутри цикла while(). Самое простое исправить - установить логическое значение true при разрыве while, проверить его после цикла и снова сломать, если true.

Смежные вопросы