Проблемы с логи c во вложенном цикле for - PullRequest
0 голосов
/ 30 января 2020

тесно связано с Java программированием - вложенный в циклы для игры тральщика , моя программа Minesweeper предназначена для l oop прохождения через ячейки, проверки каждой соседней ячейки, выполнения теста logi c для проверьте, если это мина, а затем перейти к следующему. Однако когда я запускаю его, он как-то становится бесконечным. Я пытался изменить переменные, поменять знаки (<становится> и + становится -) и найти другие решения, но я не могу ничего найти.

Распечатки предназначены для отладки, игровая доска установлена ​​на [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. Я предполагаю, что это ошибка logi c в одном из циклов for, но я не могу найди это для моей жизни. Любая помощь приветствуется, и я сделаю все возможное, чтобы ответить на любые вопросы.

РЕДАКТИРОВАТЬ: пунктуация

1 Ответ

0 голосов
/ 30 января 2020

Попробуйте заменить r ++ на c ++

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

...