循环不递增

时间:2015-12-18 11:41:54

标签: java loops for-loop

所以给出一些背景信息。我正在创造一个解决自己的小扫雷问题。我首先从一个非常基本的算法开始,它将会通过,当它看到一个' - '字符时,它会在现场猜测。是的,我知道这很糟糕,但我很快就会推进它。

但这是我的问题。

输入

public int[] aiMove()
{
    int[] move = new int[2];
    for(int a = 0; a<board.length-1; a++)
    {
        for(int b = 0; b<board.length-1; b++)
        {
            System.out.println(a +" and "+ b);
            System.out.println(a+"<"+(board.length-1));
            System.out.println(b+"<"+(board.length-1));



            if(board[a][b]=='-')
            {
                move[0]=a;
                move[1]=b;
                return move;
            }
            else
            {

                System.out.println("No Moves left");
            }
        }
    }
    return move;
}

由于某种原因,它不想增加a和b值。

它正在进入一个无限循环,所以我快速检查了代码中的那些print语句。

这就是返回的内容。

 0<7
0 and 0
0<7
0<7
0 and 0
0<7
0<7
0 and 0
0<7
0<7
0 and 0
0<7
0<7
0 and 0
0<7
0<7
0 and 0
0<7
0<7
0 and 0
0<7
0<7

2 个答案:

答案 0 :(得分:2)

每次调用此方法时,都会执行以下操作:

       if(board[a][b]=='-')
        {
            move[0]=a;
            move[1]=b;
            return move;
必须从另一种方法重复调用

aiMove

答案 1 :(得分:0)

您的方法不会调用 if(board[a][b]=='-') { move[0]=a; move[1]=b; return move; } else { System.out.println("No Moves left"); } ,因此在此部分代码中

            move[0]=a;
            move[1]=b;
            return move;

每次执行这三行并返回“移动”时,方法结束

board[0][0]

因为-等于$modal,即使您多次调用它,它也总是在第一个周期结束,因此它不再循环。