所以我有这个代码,它在一段时间(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时,它通常不起作用...希望有帮助
答案 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。