You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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();
    }
}

关键改动说明

  1. 重构循环结构:将功能选择、执行逻辑全部放入do-while循环内部,循环条件改为pick != 5,只要用户不选退出,就会反复显示主菜单。
  2. 输入合法性处理:添加了空值判断(用户点击取消)和格式异常捕获,避免程序崩溃。
  3. 交互逻辑优化:默认采用弹窗确认返回菜单,若坚持保留输入0返回的逻辑,可启用注释中的控制台输入判断代码。
  4. 代码可读性提升:用switch替代冗长的if-else分支,逻辑更清晰。

内容的提问来源于stack exchange,提问作者Dimitar Todorov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:53:19