所以给出一些背景信息。我正在创造一个解决自己的小扫雷问题。我首先从一个非常基本的算法开始,它将会通过,当它看到一个' - '字符时,它会在现场猜测。是的,我知道这很糟糕,但我很快就会推进它。
但这是我的问题。
输入
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
答案 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
,即使您多次调用它,它也总是在第一个周期结束,因此它不再循环。