Java程序从一开始就没有开始,尽管我试图告诉它

时间:2012-12-12 08:03:42

标签: java loops while-loop

基本上,我正在尝试使用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 个答案:

答案 0 :(得分:1)

将三个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
}

答案 1 :(得分:1)

显然它不会从一开始就开始。你正在做的是在三个独立的while循环中检查条件。如果其中三个失败,它应该退出。功能没有任何问题。正如@irrelephant所说,你可以在另一个while循环中包含三个while循环。
我建议在一个while循环中使用三个案例的开关。

答案 2 :(得分: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;
            }
        }
}

答案 3 :(得分: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
            }
        }
    }
}