在下面的if语句中,如果它为假,则将正确打印else语句。 "No order with this number exists, please create a new order.",如果为true,则也可以正确打印第一个语句,但始终跟随else语句。为什么break;不能在第一个if字符打印后终止?

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

最佳答案

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.
}

10-05 21:12
查看更多