java - 如何回到上一个切换?

标签 java

所以我希望我的开关是,如果用户选择 switch(b) 否,它将返回到 switch(a) 之前的开关。我该怎么做?我对 Java 还很陌生。

    switch(a){
        case 1:
            System.out.println("Here are the available rooms.");
            System.out.println("[1] Room No. 1");
            System.out.println("[2] Room No. 2");
            System.out.println("[3] Room No. 3");
            System.out.println("[4] Room No. 4");
            System.out.println("[5] Room No. 5\n");
            System.out.print("\nWhich room would you like? [1-5]:");
            b= sc.nextInt();

            switch(b){
                case 1:
                    System.out.println("Room No. 1 costs $200 per stay.");
                    System.out.println("[1] Yes");
                    System.out.println("[2] No");
                    System.out.print("Do you wish to proceed? :");
                    c=sc.nextInt();
                    break;
            }

        break;
    }

最佳答案

您需要使用带标签的循环:

theLabel: while (true) { // whatever condition, whatever kind of loop:
  switch (a) {
      case 1:
        // ...
        switch (b) {
          case 1:
            // ...
            continue theLabel;
        }
  }
}

这将跳回到外循环的开头,因此它将再次执行 a 上的 switch。

但实际上,这并不是一个很好的结构方式。几乎总是有比使用标记循环更好的方法,例如将一些嵌套逻辑提取到方法中。

在这种情况下,我会质疑“房间 1-房间 5”的开关的使用。除非每个房间都有特定的逻辑,否则只需使用(例如)数组、列表或映射来存储每个房间的价格。

关于java - 如何回到上一个切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60023456/

相关文章:

java - Java中的原始数据类型是线程安全的吗

java - ReSTLet 示例项目出错

java - Java中是否有与C的scanf等效的方法?

java - primefaces 3.4,p :schedule showing events on wrong dates

Java 抽象类(this 关键字)

java - 将 OutputStream 转换为 ByteArrayOutputStream

java - 修改java中的数组

java - Unity3D 创建可编辑体素环境的最佳方式

java - struts2的类型转换?

java - 需要将未知数量的学生记录添加到学校记录中