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

如何在单个JOptionPane对话框中显示完整的斐波那契数列?

解决JOptionPane一次性展示完整斐波那契数列的问题

你的问题出在每次循环都调用JOptionPane.showMessageDialog,导致每次只显示一个元素。要实现一次性展示完整数列,只需先把所有数列元素拼接成一个字符串,最后再调用一次对话框展示即可。

修改后的完整代码

import javax.swing.JOptionPane;

public class FibonacciSeries {
    public static void main(String[] args){
        String userInput;
        int a = 1;
        int b = 1;
        int c = 0, d = 0;

        userInput = JOptionPane.showInputDialog(null, "Enter a number of series", "Fibonacci Series", JOptionPane.QUESTION_MESSAGE);
        int fn = Integer.parseInt(userInput);

        // 用StringBuilder高效拼接数列字符串,避免循环中频繁创建String对象
        StringBuilder seriesBuilder = new StringBuilder("Fibonacci Series: ");
        
        for (d = 0 ; d < fn; d++)
        {
            // 将当前元素添加到字符串中,用空格分隔
            seriesBuilder.append(a).append(" ");
            // 计算下一个斐波那契数
            c = a + b;
            a = b;
            b = c;
        }

        // 最后一次性弹出对话框展示完整数列
        JOptionPane.showMessageDialog(null, seriesBuilder.toString().trim(), "Fibonacci Series", JOptionPane.INFORMATION_MESSAGE);
    }
}

关键修改点说明

  • 使用StringBuilder拼接字符串:循环中直接拼接String会频繁创建新的字符串对象,效率低下,StringBuilder是循环拼接场景下更高效的选择。
  • 移除循环内的对话框调用:把原来在循环里的弹窗代码移到循环外,只在所有元素拼接完成后调用一次,实现一次性展示完整数列。
  • 优化对话框参数:将原来的-1替换成JOptionPane的标准常量(如JOptionPane.QUESTION_MESSAGE、JOptionPane.INFORMATION_MESSAGE),提升代码可读性。
  • 末尾空格处理:调用trim()去掉字符串末尾多余的空格,让输出格式更整洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:50:43