繁体   English   中英

如何使我的代码重新启动?

[英]How do I make my code restart?

因此,我有这段代码,它位于while(MainMenu)里面,我想学习的是如何重新启动代码。 然后MainMenu = true; 可以,但是有时它不会导致我使用return来使程序崩溃,因为用户可以作弊...

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时,它通常不起作用...希望对您有所帮助

这个:

MainMenu=false;
MainMenu=true;

与此相同:

MainMenu=true;

您正在分配一个值,该值将返回到循环开始时进行检查。 如果此时该值为true ,它将继续。 因此,如果要继续循环,请将其设置为true 如果要停止,只需将其设置为false 做一个或另一个,不要同时做。 请注意, MainMenu=false将继续执行当前循环,并且(除非以后将其设置为true)将阻止其再次循环。

return语句所做的是退出您的while循环完全包含的功能。 如果循环结束后有清除代码,则您不希望return ,因为那样会跳过它。

如果要在循环后执行更多代码(尚未退出函数),但是要立即退出循环而不完成当前迭代,则可以使用break语句。

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

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

continue;

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

根据我的解释,您可能会有一些类似以下的代码:

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;

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

如果您在使用继续时结束程序,则可能是顶部缺少while(true) 这部分是使代码永久无条件运行所必需的。 否则,在(MainMenu)退出时,您的程序将运行完成。

另外,我想补充一点

MainMenu = false;
MainMenu = true;

相当于

MainMenu = true;

您的代码按顺序执行。 一旦进入while循环,便不会再次检查MainMenu,直到遇到continue或循环中的所有代码完成执行为止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM