1

基本的に、main メソッドを使用してテスト クラスを作成しようとしています。ユーザーの入力に応じて、プログラムは特定の一連のステップをたどるはずであり、最後に、プログラムを最初からやり直そうとしています (つまり、プログラムの最初に最初の質問をします)。 、実際にプログラムを終了して再起動する必要はありません)。

私は過去にこのようなことをしたことがあり、以前と同じ方法でそれをやろうとしていますが、何らかの理由で今回はうまくいきません。

私がやろうとしていることの基本的な要点は次のとおりです。

public class Payroll {
    public static void main(String[] args) {
        int steps = 0;

        while(steps == 0) {
        <Execute this code>
        steps = 1;
        }

        while(steps == 1) {
        <Execute this code>
        steps = 2;
        }

        while(steps == 2) {
        <Execute this code>
        steps = 0; //go back to the beginning
        }
    }
}

問題は、プログラムが「steps = 0」というステップに到達すると、期待したように最初に戻るのではなく、完全に終了することです。

私がやろうとしていることを誰かが知っていますか?

4

4 に答える 4

1

3 つの while ループを別の while ループで囲み、 からの右中while(steps == 0)括弧}の後に延長しwhile(steps == 2)ます。

ループでフローを制御するsteps == 0場合は、新しい while ループに条件を指定できます。steps == 2次に、ステップを -1 に設定して、steps == 2ループだけでなく囲んでいるループもエスケープできます。このような:

while(steps == 0) {
    while(steps == 0) { /* ... */ }
    while(steps == 1) { /* ... */ }
    while(steps == 2) { /* ... */ } // this loop sets steps back to 0 to keep
                                    // looping, or it sets steps to -1 to quit
}
于 2012-12-12T08:05:22.227 に答える
1

明らかに、最初から開始するわけではありません。あなたがしていることは、3 つの個別の独立した while ループで条件をチェックすることです。そのうちの 3 つが失敗した場合、終了する必要があります。機能に問題はありません。@irrelephantが言ったように、3つのwhileループを別のwhileループで囲むことができます。
1 つの while ループ内に 3 つのケースがある switch をお勧めします。

于 2012-12-12T08:11:08.357 に答える
0

あなたのコードは次のものとどのように違いますか:

public static void main(String[] args) {
        <Execute step == 0 code>
        <Execute step == 1 code>
        <Execute step == 2 code>
}

その場合、基本的にはそうではありません:

public static void main(String[] args) {
        boolean done = false;

        while(!(done)) {
            <Execute step == 0 code>
            <Execute step == 1 code>
            <Execute step == 2 code>

            if(some condition) {
                done = true;
            }
        }
}
于 2012-12-12T08:16:18.283 に答える
0

ただし、ネストされたループはお勧めできません。再帰を試してください。ループを使用すると、これが私が行う方法です。step=0 である限り、コードは繰り返し続けます。

public class Payroll {
    public static void main(String[] args) {
        int steps = 0;
        while (steps == 0) {

            while (steps == 0) {
                <Execute this code>
                steps = 1;

            }

            while (steps == 1) {
                <Execute this code>
                steps = 2;

            }

            while (steps == 2) {
                 <Execute this code>
                steps = 0; //go back to the beginning
            }
        }
    }
}
于 2012-12-12T08:38:41.420 に答える