Java多功能计算器执行操作后无法返回主菜单问题求助
Java多功能计算器返回主菜单失效问题修复
问题根源
你的代码逻辑存在两处核心问题:
- 外层
do-while循环仅在程序启动时执行一次,用户选择功能后循环直接结束,后续即使将pick设为0,程序也已经走到main方法末尾,不会回到菜单循环。 - 初始
do-while的循环条件写反了:原逻辑是pick == 0时显示菜单,但用户第一次输入的是功能编号(1-5),循环直接终止,完全不符合需求。
修复后的完整代码
import java.util.Scanner; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int pick; do { String pickString = JOptionPane.showInputDialog( "请选择要使用的工具(仅输入数字):\n" + "1. 基础计算器\n" + "2. 解二次方程\n" + "3. 直角三角形求边\n" + "4. 坐标系两点间距离计算\n" + "5. 退出" ); // 处理用户点击取消的情况 if (pickString == null) { System.exit(0); } try { pick = Integer.parseInt(pickString); } catch (NumberFormatException e) { JOptionPane.showMessageDialog(null, "请输入有效的数字!"); pick = 0; // 重新回到菜单 continue; } switch (pick) { case 1: // 基础计算器逻辑(替换为你的实际代码) System.out.println("正在执行基础计算器操作..."); break; case 2: // 解二次方程逻辑(替换为你的实际代码) System.out.println("正在解二次方程..."); break; case 3: // 直角三角形求边逻辑(替换为你的实际代码) System.out.println("正在计算直角三角形边长..."); break; case 4: // 坐标系两点距离计算逻辑(替换为你的实际代码) System.out.println("正在计算两点间距离..."); break; case 5: System.exit(0); default: JOptionPane.showMessageDialog(null, "请输入1-5之间的有效数字!"); } // 若需保留输入0返回的逻辑,可替换为以下代码块 // System.out.println("输入0返回主菜单"); // while (scanner.nextInt() != 0) { // System.out.println("请输入0返回主菜单"); // } // 操作完成后自动返回菜单(弹窗确认版) JOptionPane.showMessageDialog(null, "操作完成,点击确定返回主菜单"); } while (pick != 5); // 直到用户选择退出才终止循环 scanner.close(); } }
关键改动说明
- 重构循环结构:将功能选择、执行逻辑全部放入
do-while循环内部,循环条件改为pick != 5,只要用户不选退出,就会反复显示主菜单。 - 输入合法性处理:添加了空值判断(用户点击取消)和格式异常捕获,避免程序崩溃。
- 交互逻辑优化:默认采用弹窗确认返回菜单,若坚持保留输入0返回的逻辑,可启用注释中的控制台输入判断代码。
- 代码可读性提升:用
switch替代冗长的if-else分支,逻辑更清晰。
内容的提问来源于stack exchange,提问作者Dimitar Todorov
相关产品推荐
相关产品推荐

