Java程序涉及
我正在尝试编写以下程序序列
序列中的前三个数字是1,1,2。序列中的每一个其他数字是前面三个数字的总和。程序应提示用户输入限制;当序列中的当前编号大于或等于此限值时,程序将停止
例如,如果我写的限制是123,我应该得到:1 1 2 4 7 13 24 44 81
我尝试了以下方法:
import jpb.*;
public class XiaolinSequence {
public static void main(String[] args) {
SimpleIO.prompt("Enter a limit on the largest number to be displayed:");
String userInput = SimpleIO.readLine();
int counter = Integer.parseInt(userInput);
int older = 1;
int old = 1;
int current = 2;
while (current < counter) {
int nextNumber = older + old + current;
older = old;
old = current;
current = nextNumber;
System.out.println(nextNumber);
}
}
}
但是我很难把序列打印出来
# 1 楼答案
好吧,既然有人因为你的
SimpleIO
而抨击我,那就用你想读的任何东西吧。相反,我要指出代码中的一个逻辑缺陷要使程序正常运行,需要打印出
older
而不是current
,如下所示:它很好用
在{}中没有{}这样的东西罢工> 您可能希望将
String userInput = SimpleIO.readLine()
替换为然后代码就可以工作了
哦,顺便说一下,在开始循环之前,别忘了打印出
1 1 2
# 2 楼答案
你需要改变你打印东西的方式
丢失的
1 1 2
永远不会打印,因为它们永远不会存储在nextnumber
中,这是您打印过的唯一变量您将获得一个额外的
149
,因为您在不检查它的情况下打印nextnumber
,它的值大于限制对我来说,以下代码的输出是
1 1 2 4 7 13 24 44 81
全部在新行上