如何重新启动代码?

时间:2015-07-14 19:44:15

标签: java

所以我有这个代码,它在一段时间(MainMenu),我想学习的是如何重新启动我的代码..有时使用MainMenu = false;然后MainMenu = true;有效,但有时它不会导致我使用返回来崩溃程序,因为用户可以作弊......

if(CitizenLoveNum<=20){
            JOptionPane.showMessageDialog(null, "Your citizen are protesting against you! You need to stop them now before something really bad happens", "Citizens on Strike!", JOptionPane.WARNING_MESSAGE);
            String Strike=JOptionPane.showInputDialog("Choose 1 of the options below! \n 1.Pay Them (-1000$) \n 2.Send Army (With this move you can lose from 0 to 5 men!)", "Citizens on Strike!");
            if(Strike.equals("1")){
                if(MoneyCount<=0){
                    JOptionPane.showMessageDialog(null, "Out Of Money! Try again later..", "No Money Left", JOptionPane.WARNING_MESSAGE);
                    return;
                }
                JOptionPane.showMessageDialog(null,"The Citizen's are calm once more. But try buying them recources so that won't happen again!", "Citizens on Strike!",JOptionPane.INFORMATION_MESSAGE);
                MoneyCount-=1000;
                MainMenu=false;
                MainMenu=true;
            }else{
                Random Army= new Random();
                int ArmyNum = Army.nextInt(5 - 0) + 0;
                JOptionPane.showMessageDialog(null,"You have sent the army. You lost "+ArmyNum+" Soldiers.", "Citizens on Strike!",JOptionPane.INFORMATION_MESSAGE);
                SoldierCount1-=ArmyNum;
                MainMenu=false;
                MainMenu=true;
            }
        }

它在我推出MainMenu = false的地方工作;的MainMenu = TRUE;但它不在我使用返回的地方;我不得不放弃;因为MainMenu = false;的MainMenu = TRUE;没有用。感谢您的时间 :) 编辑:当我在if中使用if时,它通常不起作用...希望有帮助

3 个答案:

答案 0 :(得分:0)

此:

MainMenu=false;
MainMenu=true;

与此相同:

MainMenu=true;

您正在分配一个值,当它返回循环开始时将被检查。如果此时值为true,则会继续。因此,如果要继续循环,请将其设置为true。如果您想停止,只需将其设置为false即可。做其中一个,而不是两个。请注意MainMenu=false将继续执行当前循环,并且(除非稍后设置为true)将阻止它再次循环。

return语句的作用是退出完全包含while循环的函数。如果在循环结束后有清理代码,则不希望return,因为它会跳过它。

如果你想在循环之后执行更多的代码(还没有退出函数),但是你想立即退出循环而不完成当前的迭代,你可以使用break语句。

如果要立即(从循环中的任何位置)返回循环的开头并继续执行它,请使用continue语句。循环是否再次执行将取决于MainMenu的值。

答案 1 :(得分:0)

如果要返回while主体的顶部,可以使用关键字

continue;

更改while主体中的MainMenu值不会导致任何操作,因为在每个新循环之前检查它,将立即应用continue关键字。

答案 2 :(得分:0)

根据我的解释,你可能有这样的代码:

while(true) {
    // A: Do stuff here

    while(MainMenu) {
        // B: Stuff before your posted code
        if(CitizenLoveNum<=20){
        // C: Your posted code
        }
    }

    // D: Do other stuff here
}

如果您想转到B,请使用continue;

如果您想转到D,请使用break;

如果您需要转到A 而不触及D ,请将D括在if语句中。

如果你的程序在使用continue时结束,你可能会错过顶部的while(true)。这部分是保持代码永久无条件运行所必需的。否则,退出while(MainMenu)时,程序将运行完毕。

另外,我想补充说明

MainMenu = false;
MainMenu = true;

相当于

MainMenu = true;

您的代码按顺序执行。进入while循环后,在遇到continue或循环内的所有代码完成执行之前,不再检查MainMenu。