Java点餐系统如何根据用户输入调用对应菜单方法
问题修复方案
问题根源
- 你的
mainmenu()方法仅接收了用户输入的菜单选项,没有将选择结果返回给调用它的main方法,用户的选择没有被后续逻辑用到 main方法的循环内是硬编码按顺序执行mainmenu()、mainmeals()、mainsnacks()三个方法,没有做分支判断,所以不管用户选什么都会依次执行所有菜单逻辑
修改步骤
1. 改造mainmenu方法,返回用户选择
将mainmenu()的返回值类型从void改为int,在方法末尾将用户输入的选项返回给调用方:
public static int mainmenu() { int Orders; int Meals = 1; int Snacks = 2; int Drinks = 3; int EXIT = 4; Scanner myInput = new Scanner(System.in); System.out.println("=======[STRESSFOOD]====="); System.out.println("---------[ Menu ]-------"); System.out.println("1----------Meals--------"); System.out.println("2---------Snacks--------"); System.out.println("3---------Drinks--------"); System.out.println("4--------[ EXIT ]-------"); Orders = myInput.nextInt(); return Orders; }
2. 改造main方法,新增分支判断逻辑
在main方法中接收mainmenu()返回的用户选择,用switch分支匹配对应菜单逻辑,只有用户选中对应分类才会执行对应菜单方法:
public static void main(String[] args) { int Options_Snacks; int Options_Snacks2; int Options_Snacks3; int Options_Drinks; int Options_Drinks2; int Options_Drinks3; int diff,prod ; int yes = 1; int no = 2; int End; do { int userChoice = mainmenu(); // 根据用户选择执行对应逻辑 switch (userChoice) { case 1: mainmeals(); break; case 2: mainsnacks(); break; case 3: // 此处替换为你自己的饮料菜单方法名即可 maindrinks(); break; case 4: System.out.println("退出点餐系统,感谢使用"); return; default: System.out.println("输入的选项不合法,请重新输入"); } Scanner myInput = new Scanner(System.in); System.out.println("是否需要继续点餐:按" + yes +"继续,按" + no +"结束"); End = myInput.nextInt(); } while(End == 1); }
优化建议
- 不要重复创建
Scanner对象,建议把Scanner定义为类的静态全局变量,或者在main方法中创建一次后传递给各个需要输入的方法,避免资源浪费和输入异常。
内容的提问来源于stack exchange,提问作者newbie
相关产品推荐
相关产品推荐

