2015-04-18 26 views
0

在下面的if语句中,如果它是false,它会正确地打印else语句。 "No order with this number exists, please create a new order.",如果它是真的,它也会正确打印第一条语句,但它总是跟着else语句。为什么break;在第一个if case打印后终止?为什么在打印第一个情况后开关盒没有断开?

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

有做这项工作的几个不同的方法,但最简单的很可能是只需添加你设置为true一个布尔值,如果它要打破的情况下,是这样的:

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()循环中打破一个case。最直接的解决方法是在断开while时将boolean设置为true,在循环后检查它,如果为true,则再次断开。

相关问题