如何退出foreach循环?哪个使用枚举数据

时间:2019-01-23 17:23:46

标签: java loops

我想用关卡实现一个游戏,在赢得当前关卡之后,用户可以解决另一个游戏。我通过使用枚举数据的每个循环来做到这一点。如果您还有其他解决此问题的方法,请与我分享。在用户做出正确的决定后,程序已经更改了级别,但是我要实现的是,如果用户提供了错误的答案,它将退出主循环。我试图用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");
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

将标记添加到循环

a: for (;;)
   {
     while()
     {
      if(condition)
        break a;// at your condition  write like this
     }

   }

答案 1 :(得分:0)

break语句只会脱离当前循环。

如果在return之后您不想执行其他任何操作,则可以将中断更改为for,也可以重组代码以使用较小的方法,从而避免使用太多方法嵌套在一种方法中。

您还可以添加一个设置为false的布尔变量,并在for循环中进行检查,但可能会使代码更脏。