-1

次のプログラムシーケンスを書き込もうとしています。

シーケンスの最初の 3 つの数字は 1、1、2 です。シーケンスの他のすべての数字は、前の 3 つの数字の合計です。プログラムは、制限を入力するようにユーザーに求める必要があります。シーケンス内の現在の番号がこの制限以上になると、プログラムは停止します。

たとえば、制限を 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);
        }
    }

}

しかし、シーケンスを印刷するのに問題があります。

4

2 に答える 2

2

人々があなたのために私を殴ったのでSimpleIO、入力を読みたいものは何でも使用してください。代わりに、コードの論理上の欠陥を指摘します。

プログラムが正しく機能するには、次のようolderに の代わりに出力する必要があります。current

while (older < counter) 
{
    System.out.println(older);

    final int nextnumber = older + old + current;
    older = old;
    old = current;
    current = nextnumber;
}

それはうまく動作します。


のようなものはありませSimpleIOjava.lang

String userInput = SimpleIO.readLine()あなたはと交換したいかもしれません

System.out.print("Enter limit: "); 
Scanner in = new Scanner(System.in); 
String userInput = in.next(); 

その後、コードが機能します。

ところで、1 1 2ループを開始する前に印刷することを忘れないでください。

于 2013-10-04T20:55:29.247 に答える