【问题标题】:why is the switch case not breaking after the first if case is printed?为什么在打印第一个 if case 后 switch case 没有损坏?
【发布时间】:2015-04-18 10:04:41
【问题描述】:

在下面的 if 语句中,如果它是 false,它将正确打印 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

【问题讨论】:

  • 因为你没有break声明。
  • 它破坏了封闭的while(),因此无法破坏开关。
  • System.out.println("The last item: " + itemRemoved + "\n was successfully removed from your order!"); break;
  • 请格式化您的代码,使其可读
  • 那么我该在哪里休息呢?

标签: java if-statement switch-statement case


【解决方案1】:

当您在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.
} 

【讨论】:

  • 工作!!谢谢你! :)
【解决方案2】:

您不能从 while() 循环中中断案例。最直接的解决方法是在中断 while 时将布尔值设置为 true,在循环后检查它,如果为 true,则再次中断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-23
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    相关资源
    最近更新 更多