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

将三个 while 循环包含在另一个 while 循环中,从while(steps == 0)到 的右大括号之后}延伸while(steps == 2)

steps == 0如果您希望steps == 2循环控制流程,则新的 while 循环可以具有条件。然后,您可以将步骤设置为 -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

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

于 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 回答