【问题标题】:Issues with logic in a nested for loop嵌套 for 循环中的逻辑问题
【发布时间】:2020-01-30 15:46:10
【问题描述】:

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); 
   } 

当我尝试运行它时,我得到一个无限的打印输出: “新单元”后跟 9 个“新项目”。这应该只打印出 100 次(每个单元格一次),但它不会在 100 次后停止。我认为这是其中一个 for 循环中的逻辑错误,但我找不到它为了我的一生。感谢您提供任何帮助,我会尽力回答任何问题。

编辑:标点符号

【问题讨论】:

  • 秒循环递增 r 而不是 c ;)
  • 就算不喜欢,也是c++
  • 即使你不喜欢它,它也是 c++...哈哈,好一个 :)

标签: java for-loop logic minesweeper


【解决方案1】:

尝试用c++替换r++

for(int c = 0; c &lt;= (gameBoard[0].length - 1); c++){ //column

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    相关资源
    最近更新 更多