Java 如何返回到以前的交换机?
所以我希望我的开关是,如果用户选择开关(b)否,它将返回到开关(a)上一个开关。我怎么做?我对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");
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语句,并重写整个内容。