嵌套 for 循环中的逻辑问题
Issues with logic in a nested for loop
与 Java programming - nested for loops for minesweeper game 密切相关,我的扫雷程序旨在循环遍历单元格,检查每个相邻的单元格,执行逻辑测试以检查它是否是地雷,然后跳转到下一个单元格。但是,当我 运行 它时,它不知何故变成了无限循环。我试过更改变量、反转符号(< 变成 > 和 + 变成 -),并用谷歌搜索其他解决方案,但我找不到任何东西。
打印输出用于调试,游戏板设置为[10][10],
public static void assignNumbers(int[][] gameBoard)
{
for(int r = 0; r <= (gameBoard.length - 1); r++){ //row
for(int c = 0; c <= (gameBoard[0].length - 1); r++){ //column
System.out.print("New Cell ");
for(int vR = r+1; vR > r-2; vR --){ //vR is visiting Row
for(int vC = c+1; vC > c-2; vC --){ //vC is visiting Column
System.out.print("new item ");
if (isValid(vR, vC, gameBoard)){
System.out.print("isMine? ");
if (isMine(vR, vC, gameBoard)){
gameBoard[r][c] += 1;
System.out.print(" MINE ");
}
else {
System.out.print(" NO ");
}
}
}
}
System.out.println();
}
}
}
public static boolean isMine(int r, int c, int[][] gameBoard){
if(gameBoard[r][c] != 100){
return false;
}
else{
return true;
}
}
public static boolean isValid(int r, int c, int[][] gameBoard)
{
// Returns true if row number and column number
// is in range
return ((r >= 0) && (r < SIDE)) && ((c >= 0) && (c < SIDE)) && !isMine(r, c, gameBoard);
}
当我尝试 运行 它时,我得到一个无限打印输出:
"New Cell" 后跟 9 "new items"。 应该 只打印 100 次(每个单元格一次),但是它不会在 100 次后停止。我认为这是一个 for 循环中的逻辑错误,但我可以'我一辈子都找不到它。感谢任何帮助,我会尽力回答任何问题。
编辑:标点符号
尝试用c++替换r++
for(int c = 0; c <= (gameBoard[0].length - 1); c++){ //column
与 Java programming - nested for loops for minesweeper game 密切相关,我的扫雷程序旨在循环遍历单元格,检查每个相邻的单元格,执行逻辑测试以检查它是否是地雷,然后跳转到下一个单元格。但是,当我 运行 它时,它不知何故变成了无限循环。我试过更改变量、反转符号(< 变成 > 和 + 变成 -),并用谷歌搜索其他解决方案,但我找不到任何东西。
打印输出用于调试,游戏板设置为[10][10],
public static void assignNumbers(int[][] gameBoard)
{
for(int r = 0; r <= (gameBoard.length - 1); r++){ //row
for(int c = 0; c <= (gameBoard[0].length - 1); r++){ //column
System.out.print("New Cell ");
for(int vR = r+1; vR > r-2; vR --){ //vR is visiting Row
for(int vC = c+1; vC > c-2; vC --){ //vC is visiting Column
System.out.print("new item ");
if (isValid(vR, vC, gameBoard)){
System.out.print("isMine? ");
if (isMine(vR, vC, gameBoard)){
gameBoard[r][c] += 1;
System.out.print(" MINE ");
}
else {
System.out.print(" NO ");
}
}
}
}
System.out.println();
}
}
}
public static boolean isMine(int r, int c, int[][] gameBoard){
if(gameBoard[r][c] != 100){
return false;
}
else{
return true;
}
}
public static boolean isValid(int r, int c, int[][] gameBoard)
{
// Returns true if row number and column number
// is in range
return ((r >= 0) && (r < SIDE)) && ((c >= 0) && (c < SIDE)) && !isMine(r, c, gameBoard);
}
当我尝试 运行 它时,我得到一个无限打印输出: "New Cell" 后跟 9 "new items"。 应该 只打印 100 次(每个单元格一次),但是它不会在 100 次后停止。我认为这是一个 for 循环中的逻辑错误,但我可以'我一辈子都找不到它。感谢任何帮助,我会尽力回答任何问题。
编辑:标点符号
尝试用c++替换r++
for(int c = 0; c <= (gameBoard[0].length - 1); c++){ //column