如何修改Java代码让斐波那契数列全部输出到单个JOptionPane对话框
问题原因
你现在的代码逻辑是每生成一个斐波那契数列元素,就调用一次JOptionPane.showMessageDialog方法,所以每个元素都会单独弹出窗口。想要所有结果在同一个窗口展示,只需要先把所有元素拼接成完整的结果字符串,最后只调用一次弹窗方法即可。
需要修改的代码部分
- 新增一个字符串拼接容器,推荐用
StringBuilder(比直接用String做字符串拼接性能更好),用来累计存储所有要输出的数列元素 - 删除原本在初始化后、循环内的两次弹窗调用,改为把生成的元素追加到拼接容器中
- 所有元素计算完成后,只调用一次弹窗方法,传入拼接好的完整结果
修改后的完整代码
package Fibonacci; class Fibonacci { public static void main(String[]args) { int a = 0; int b = 1; String input; input = javax.swing.JOptionPane.showInputDialog("How many elements you want to print in a Fibonacci series"); int n = Integer.parseInt(input); // 定义StringBuilder用来拼接所有结果 StringBuilder result = new StringBuilder(); // 先把前两个元素加进去 result.append(a).append(" ").append(b).append(" "); int c; for(int i = 2; i < n; i++) { c = a + b; // 循环内只拼接新生成的元素,不弹窗 result.append(c).append(" "); a = b; b = c; } // 所有元素计算完成后,只弹一次窗口展示完整结果 javax.swing.JOptionPane.showMessageDialog(null, result.toString()); } }
如果是初学不想用StringBuilder,也可以用String类型的变量做拼接,写法更直观,只是性能略低,少量元素的场景下完全无差别,替换对应部分的写法即可:
// 初始化结果字符串 String result = a + " " + b + " "; // 循环内拼接 result = result + c + " "; // 最后弹窗直接传result即可
内容的提问来源于stack exchange,提问作者EC1
相关产品推荐
相关产品推荐

