0

リフトオフまでのカウントダウンを行うプログラムを作成しようとしていますが、for ループの代わりに while ループを使用しています。

for ループ コードと同じ基本原則を使用しているにもかかわらず、これまでのところ、成功しているのは無限ループの作成だけです。

import acm.program.*;



public class CountDownWhile extends ConsoleProgram {


    public void run() {
        int t = START;
        while (t >= 0); {
            println(t);
            t = t--;
            }
        println("Liftoff!");
        }

    private static final int START = 10;

    }
4

2 に答える 2

4

あなたのコードには2つのエラーがあります。そしてそれが無限ループに陥る理由です

1.

while (t >= 0);

この行の後にセミコロンを追加しないでください。これは、実際には何も含まれていない while ループを意味するためです。

2.

t = t--;

この質問をチェックして、この構文の詳細を確認できます: Is there a difference between x++ and ++x in java?

つまり、 の値はt--10 のままなのでt = t--、t の値を変更しないでください。

ループは次のようになります。

while (t >= 0) {
    println(t);
    t--;
}
println("Liftoff!");
于 2012-08-05T06:19:55.093 に答える
1

最初の問題は、;while ループの後です。;...を削除してみてください

public void run() {
    int t = START;
    while (t >= 0); {  /// <------ Problem 1. Correct: while(t>=0)
        println(t);
        t = t--;       /// <------ Problem 2. Correct: t--;   
        }
    println("Liftoff!");
    }

そして2つ目の問題は

t=t--;

t の値は変更されないままです。

于 2012-08-05T06:14:12.460 に答える