You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用JOptionPane获取Yes/No响应并实现程序循环逻辑?

用JOptionPane实现Yes/No响应驱动的循环议价流程

嘿,我来帮你搞定这个需求!核心思路就是用循环结构结合JOptionPane的确认对话框,把「是否议价」作为循环的开关——用户选“是”就进入买卖流程,完成后再回到议价询问;选“否”就直接终止程序。

核心知识点:JOptionPane的确认对话框返回值

JOptionPane的showConfirmDialog()会返回整数常量,对应用户的选择:

  • JOptionPane.YES_OPTION:用户点击了「是」
  • JOptionPane.NO_OPTION:用户点击了「否」
  • JOptionPane.CLOSED_OPTION:用户关闭了对话框(没点按钮)

完整代码示例

下面是直接能用的代码,我加了详细注释,你可以直接替换掉买卖流程里的占位代码:

import javax.swing.JOptionPane;

public class BargainTradeProgram {
    public static void main(String[] args) {
        int bargainDecision;
        
        // do-while循环:至少询问一次是否议价,直到用户选"否"或关闭对话框
        do {
            // 弹出是否议价的Yes/No对话框
            bargainDecision = JOptionPane.showConfirmDialog(
                null,                // 父组件为null,对话框居中显示
                "你想要进行议价吗?", // 提示消息
                "议价确认",          // 对话框标题
                JOptionPane.YES_NO_OPTION, // 显示Yes/No按钮
                JOptionPane.QUESTION_MESSAGE // 消息类型(问号图标)
            );

            // 如果用户选择"是",进入买卖流程
            if (bargainDecision == JOptionPane.YES_OPTION) {
                // 弹出购买/出售的选择对话框
                int tradeType = JOptionPane.showOptionDialog(
                    null,
                    "请选择交易类型:",
                    "交易选择",
                    JOptionPane.DEFAULT_OPTION,
                    JOptionPane.QUESTION_MESSAGE,
                    null, // 自定义图标,这里用默认
                    new String[]{"购买物品", "出售物品"}, // 自定义选项文本
                    "购买物品" // 默认选中的选项
                );

                // 根据用户选择执行对应逻辑
                switch (tradeType) {
                    case 0: // 用户选了"购买物品"
                        JOptionPane.showMessageDialog(null, "正在处理购买流程:\n1. 挑选物品\n2. 议价\n3. 完成支付");
                        // 在这里插入你的购买流程代码
                        break;
                    case 1: // 用户选了"出售物品"
                        JOptionPane.showMessageDialog(null, "正在处理出售流程:\n1. 上架物品\n2. 议价\n3. 完成交易");
                        // 在这里插入你的出售流程代码
                        break;
                    default: // 用户关闭了交易选择对话框
                        JOptionPane.showMessageDialog(null, "未选择交易类型,回到议价询问");
                }
            } 
            // 处理用户关闭议价对话框的情况(直接终止循环)
            else if (bargainDecision == JOptionPane.CLOSED_OPTION) {
                JOptionPane.showMessageDialog(null, "你关闭了对话框,程序结束");
                break;
            }

        // 只要用户选"是",就重复循环
        } while (bargainDecision == JOptionPane.YES_OPTION);

        // 用户选"否"后,显示结束提示
        if (bargainDecision == JOptionPane.NO_OPTION) {
            JOptionPane.showMessageDialog(null, "程序已结束,感谢使用!");
        }
    }
}

关键逻辑说明

  1. do-while循环:保证程序至少会问一次「是否议价」,避免用户直接进入结束状态。
  2. 分层对话框:先判断是否进入议价,再选择交易类型,逻辑清晰不混乱。
  3. 边界处理:考虑了用户关闭对话框的情况,避免程序陷入无意义的循环。

你可以根据自己的需求,把买卖流程里的提示消息替换成实际的业务代码,比如读取物品列表、计算价格之类的逻辑。

内容的提问来源于stack exchange,提问作者Victor Alam

火山引擎 最新活动