gpt4 book ai didi

java - 在菜单中重复 for 循环

转载 作者:行者123 更新时间:2023-12-02 01:49:58 24 4
gpt4 key购买 nike

我正在尝试用 Java 创建酒店菜单(我仍在学习该语言),但遇到了问题。我可以让菜单打开一个新菜单,但是当我从第二个菜单中做出选择时,它会不断循环。我认为是 for 循环引起了这个问题。谁能告诉我如何让第二个菜单条目停止循环?方法如下:

菜单类方法:

public void getMenu()
{
Floor floor = new Floor();


Scanner kboard = new Scanner(System.in);
int choice = 0;

System.out.println("Booking Menu");
System.out.println("Select from the options below");
System.out.println("1. Check room availability");
System.out.println("2. Display floor");
System.out.println("3. Display all availability");
System.out.println("4. Cancel Booking");
System.out.println("Please enter choice (press 8 to continue)");
choice=kboard.nextInt();


do
{
switch(choice)
{
case 1: room.getRoomMenu();
break;
case 2:
break;
case 3:
break;
}

}
while (choice !=8);
}

该菜单在此方法中打开第二个菜单:

    public void getRoomMenu()
{
Floor f1 = new Floor(1);
Floor f2 = new Floor(2);
Floor f3 = new Floor(3);
Floor f4 = new Floor(4);
boolean check = false;

Scanner kboard = new Scanner(System.in);
int choice = 0;
System.out.println("Which Floor?");
System.out.println("1");
System.out.println("2");
System.out.println("3");
System.out.println("4");
choice=kboard.nextInt();
do
{
switch(choice)
{
case 1: f1.displayFloor();
break;
case 2: f2.displayFloor();
break;
case 3: f3.displayFloor();
break;
case 4: f4.displayFloor();
break;
}
}
while(choice !=8);
kboard.close();
}

第二个菜单选项应显示所选楼层,其中显示该楼层的所有房间。这是displayFloor方法:

public void displayFloor()
{
/**
* Displays floor number and room display method
*/
System.out.println("Floor: "+floorNumber);
for(int counter=0;counter<rooms.length;counter++)
{
rooms[counter].display();
}


}

最佳答案

只要 choice != 8,两个 while 循环都会继续循环。而且由于您从未修改循环内的选择,因此它将继续循环(除非用户输入了8)。

另请注意,您添加的 break;switch-case 的中断,而不是停止 do-while-循环。要在 switch-case 中使用 break 停止整个 do-while 循环,您应该使用标签为循环命名,然后中断该循环。此外,如果用户没有进入其中一个 switch-case,您应该要求用户提供新的输入,否则它仍然会永远循环。所以像这样:

choice = kboard.nextInt();
myLoop: do {
switch(choice) {
case 1:
f1.displayFloor();
break myLoop;
case 2:
f2.displayFloor();
break myLoop;
case 3:
f3.displayFloor();
break myLoop;
case 4:
f4.displayFloor();
break myLoop;
default: // Not one of the above
System.out.println(choice + " is an unknown choice. Please choose again.");
choice = kboard.nextInt(); // Ask the user for a new input
break; // <- This break only breaks the switch, not the loop
}
} while(choice !=8);

如果您的目的是继续循环直到用户输入 8,则应该是这样的:

choice = kboard.nextInt();
do {
switch(choice) {
case 1:
f1.displayFloor();
break;
case 2:
f2.displayFloor();
break;
case 3:
f3.displayFloor();
break;
case 4:
f4.displayFloor();
break;
default: // Not one of the above
System.out.println(choice + " is an unknown choice. Please choose again.");
}
choice = kboard.nextInt(); // Ask the user for a new input for the next iteration
} while(choice !=8);

关于java - 在菜单中重复 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53117137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com