我想用关卡实现一个游戏,在赢得当前关卡之后,用户可以解决另一个游戏。我通过使用枚举数据的每个循环来做到这一点。如果您还有其他解决此问题的方法,请与我分享。在用户做出正确的决定后,程序已经更改了级别,但是我要实现的是,如果用户提供了错误的答案,它将退出主循环。我试图用break
运算符解决它,但是它不起作用。如果您对此问题还有其他解决方案,请与我分享。
static void levelchanger() {
Levelinfo[] types = Levelinfo.values();
for (Levelinfo arr : types) {
while (arr.moves != 0 && arr.display != arr.goal) {
System.out.println("It is " + arr + " level. You have: " + arr.moves + " moves. Goal: " + arr.goal);
System.out.println("Step: 1) " + arr.gnumbers[0] + " 2) " + arr.gnumbers[1]);
Scanner in = new Scanner(System.in);
int action = in.nextInt();
switch (action) {
case 1:
arr.display += arr.gnumbers[0];
System.out.println("Result: " + arr.display);
break;
case 2:
arr.display += arr.gnumbers[1];
System.out.println("Result: " + arr.display);
break;
}
arr.moves--;
if (arr.moves == 0 && arr.display != arr.goal) {
System.out.println("You don't have more moves!");
break;
} else if (arr.display == arr.goal) {
System.out.println("Alright! Next level");
}
}
}
}
答案 0 :(得分:1)
将标记添加到循环
a: for (;;)
{
while()
{
if(condition)
break a;// at your condition write like this
}
}
答案 1 :(得分:0)
break
语句只会脱离当前循环。
如果在return
之后您不想执行其他任何操作,则可以将中断更改为for
,也可以重组代码以使用较小的方法,从而避免使用太多方法嵌套在一种方法中。
您还可以添加一个设置为false的布尔变量,并在for循环中进行检查,但可能会使代码更脏。