Печать двумерного массива в Java с помощью цикла For - PullRequest
0 голосов
/ 27 февраля 2020

В классе мне сказали, что распечатка двумерного массива выполняется с помощью двух циклов for. Может кто-нибудь объяснить мне, как это работает? Спасибо.

Мой код указан ниже (на нем должна быть напечатана доска ti c ta c toe)

Вот фотография моего вывода: Изображение

import java.util.Scanner;

 public class TicTacToe{

   public static void main(String [] args){



            char[][] gameBoard = {{' ', '|', ' ', '|', ' '},
                                        {'-', '+', '-', '+', '-'},
                                        {' ', '|', ' ', '|', ' '},
                                        {'-', '+', '-', '+', '-'},
                                        {' ', '|', ' ', '|', ' '}};


         for(char [] row: gameBoard){
          for(char c: row){
            System.out.print(c);
          }
            System.out.println();
          }

     }

 }

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Два цикла for используются для печати строки символ за символом, прежде чем перейти к следующей строке. 2D-массив - это, по сути, массив массивов или, в данном случае, массив строк. Внешний l oop проходит по каждой строке на доске, а для каждой из этих строк внутренний l oop проходит по всем символам в нем. Я добавил несколько комментариев в надежде прояснить это.

 for(char [] row: gameBoard){   //loops through each row in the gameboard 
    for(char c: row){           //loops through each character in the current row
      System.out.print(c);      //prints out the current character in the current row
    }
    System.out.println();       //creates a new line after all characters in a row have been printed
 }
0 голосов
/ 27 февраля 2020

Причина, по которой в вашем коде используются два цикла, заключается в том, что вам нужно вывести EACH символ в EACH строке.

Внешний l oop возвращает вас каждая строка и внутренний l oop получают каждый символ WITHIN этой строки. Таким образом, в первой итерации внешнего l oop вы получите верхний ряд. Теперь, когда вы получаете доступ к нему, вы можете go вперед и l oop через каждый из символов, которые он содержит с внутренним l oop, и распечатать их.

Как только все символы в этом ряду будут напечатаны, внутренний l oop заканчивается, и к следующему ряду обращаются и так далее ...

...