Java 如何返回到以前的交换机?

Java 如何返回到以前的交换机?,java,Java,所以我希望我的开关是,如果用户选择开关(b)否,它将返回到开关(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");

所以我希望我的开关是,如果用户选择开关(b)否,它将返回到开关(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;
    }

如果您的问题是从开关b移动到开关a。然后您可以使用递归实现此目的

我不知道退货类型。所以原型是

在方法中写入开关(a)。让我们将此方法命名为method1

方法中的写入开关(b)。让我们把这个方法命名为method2

method1(Object a)
{
   switch(a):
         case 1:
                 //Your code here
                 if(condition1)
                {
                     method2(a);
                }
}

method2(Object b )
{
     switch(b):
              if(condition2)
              {
                 method1(b)
              }

}

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

theLabel: while (true) { // whatever condition, whatever kind of loop:
  switch (a) {
      case 1:
        // ...
        switch (b) {
          case 1:
            // ...
            continue theLabel;
        }
  }
}
这将跳回外部循环的开始,因此它将再次在一个循环上执行开关

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


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

开关
不是一个循环,不需要返回到外部的
开关
“我该怎么做?”你需要一个循环。这是一个广泛的主题,不能在一个答案中正确地解决。您应该以一种根本不同的方式来考虑您的控制流。例如,我将去掉状态变量<代码> > <代码>和<代码> b/COD>和Switter语句,并重写整个内容。