Java中如何控制switch菜单循环执行且可终止?
解决菜单无限循环的问题
我来帮你搞定这个菜单停不下来的问题~你的代码现在陷入无限循环主要有这几个原因:
quit变量初始设为false后,整个循环过程中从来没有修改过它的值,导致do-while(!quit)的条件永远为真,循环根本停不下来- 你只在
menu方法开头读取了一次用户选择,循环内部没有重新获取新的输入,程序无法响应用户后续的操作 - 当前菜单没有提供退出选项,用户没有主动终止程序的途径
下面是修改后的完整代码,我会标注关键修改点:
import java.util.Scanner; public class MainMenu { public static void main(String[] args) { // 只创建一次Scanner实例,避免重复创建资源 Scanner scanner = new Scanner(System.in); menu(scanner); scanner.close(); // 用完后关闭Scanner } private static void menu(Scanner scanner) { int userChoice; boolean quit = false; do { // 每次循环都重新显示菜单 System.out.println("Choose an Option"); System.out.println("1 - FIND"); System.out.println("2 - IN-SHUFFLE"); System.out.println("3 - OUT-SHUFFLE"); System.out.println("4 - QUIT"); // 新增退出选项 userChoice = scanner.nextInt(); switch (userChoice) { case 1: System.out.println("\nExecuting FIND operation...\n"); // Deck.findTop(); // 调用你的业务方法 break; case 2: System.out.println("\nExecuting IN-SHUFFLE operation...\n"); // 调用你的IN-SHUFFLE方法 break; case 3: System.out.println("\nExecuting OUT-SHUFFLE operation...\n"); // 调用你的OUT-SHUFFLE方法 break; case 4: System.out.println("\nExiting program..."); quit = true; // 设置quit为true,让循环结束 break; default: System.out.println("\nInvalid Option! Please choose again.\n"); break; } } while (!quit); } }
关键修改说明:
- 新增退出选项:在菜单里添加了
4 - QUIT,用户可以通过选择这个选项终止程序 - 循环内重新获取输入:把读取用户选择的代码移到了
do-while循环内部,每次循环都会重新读取用户的新选择 - 控制循环终止:当用户选择4时,将
quit设为true,此时!quit变为false,循环结束 - 优化Scanner资源:在
main方法中创建Scanner实例并传递给menu方法,避免重复创建,使用完后关闭Scanner
现在运行代码,用户执行完操作后可以继续选择其他选项,或者选择4退出程序,不会再无限循环啦~
内容的提问来源于stack exchange,提问作者helen986
相关产品推荐
相关产品推荐

