嘿伙计们我想创建一个java程序来查找一系列数字中的斐波纳契序列。现在我想提出另一个输入,以便我可以获得斐波纳契数的输入值
例如,如果min为10且max为150,则结果为13 21 35 55 89 144但是在第三个输入中我想如果值为2则仅给出13和21作为结果。
任何帮助??
我的代码是:
public void actionPerformed(ActionEvent e) {
String x = t1.getText();
String y = t3.getText();
String o = t4.getText();
if (x.isEmpty()) {
JOptionPane.showMessageDialog(TestFibMethodRange.this, "This field cannot be empty", "Required Field", JOptionPane.ERROR_MESSAGE);
} else if (y.isEmpty()) {
JOptionPane.showMessageDialog(TestFibMethodRange.this, "This field cannot be empty", "Required Field", JOptionPane.ERROR_MESSAGE);
} else if (o.isEmpty()) {
JOptionPane.showMessageDialog(TestFibMethodRange.this, "This field cannot be empty", "Required Field", JOptionPane.ERROR_MESSAGE);
} else {
if (isInteger(x) && isInteger(y) && isInteger(o)) {
int min = Integer.valueOf(x);
int max = Integer.valueOf(y);
int nSequence = Integer.valueOf(o);
for (int i = min; i <= nSequence; i++) {
if (x3 <= max) {
if (x3 >= min) {
t2.setText(t2.getText() + " " + x3);
}
x1 = x2;
x2 = x3;
x3 = x1 + x2;
}
}
}
}
}
答案 0 :(得分:2)
您的程序可能无法正常运行,因为o
是预期项目的数量,但您首先需要计算&#34;偏移量&#34;因此已经计算了一些太低的数字。换句话说,i
在实际开始发射时已经有一个大于0
的值。
更好的方法:
int xa = 0, xb = 0, xc = 1;
while(xc < min) {
xa = xb;
xb = xc;
xc += xa;
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i < nSequence && xc <= max; i++) {
sb.append(xc);
sb.append(' ');
xa = xb;
xb = xc;
xc += xa;
}
t2.setText(sb.toString());