Как вы печатаете сетку звездочек с использованием многомерных массивов? - PullRequest
0 голосов
/ 28 марта 2019

Я новичок в программировании, и у меня есть упражнение, которое убивает меня. Как вы можете напечатать сетку (5 на 6), которая состоит только из звездочек? [Позже эти звездочки должны быть заменены буквами, которые считываются с помощью StdIn.readInt () и оператора switch, но сейчас мне по крайней мере нужно понять, как печатать сетку]. Я был бы очень признателен за любую помощь!

В частности, сетка должна выглядеть следующим образом:

//THIS ISN'T THE CODE; JUST AN ILLUSTRATION OF WHAT SHOULD BE PRINTED

  0 1 2 3 4 5
0 * * * * * *
1 * * * * * *
2 * * * * * *
3 * * * * * *
4 * * * * * *

//I AM SUPPOSED TO START WITH SOMETHING LIKE THIS:

public class Grid {
 static int X = 6;
 static int Y = 7;
public static void main(String[]args) {
    int [][] grid = new int [X][Y];

1 Ответ

0 голосов
/ 28 марта 2019

Это можно было сделать разными способами, но это мой способ сделать это:

Когда вы хотите напечатать сетку, вы должны использовать 2 вложенных цикла for. Давайте посмотрим, что происходит, когда вы используете 2 вложенных цикла for:

for(int i = 0; i < 6; i++){

   for(int j = 0; j < 7; j++){

   }
}

Начнем с первого цикла:

для i = 0, мы войдем во второй цикл и перейдем от 0 до 6.

для i = 1, мы войдем во второй цикл и перейдем от 0 до 6.

...

для i = 5, мы войдем во второй цикл и перейдем от 0 до 6.

Вы должны заметить, что j будет повторять и принимать значения от 0 до 6 с каждым значением i.

Возвращаясь к вашему вопросу и сравнивая его с тем, что я только что показал, вы должны заметить, что для каждой строки вы печатаете 7 значений (столбца).

Предположим, i - это число строк, а j - индекс каждого значения в этой строке (столбце).

public static void printGrid() {
        for (int i = 0; i < 6; i++) {
            System.out.println();
            for (int j = 0; j < 7; j++) {
                System.out.print("*");
            }
        }
    }

Этот код печатается на каждой строке (i), 7 звездочках (j). И каждый раз, когда я увеличиваю, мы возвращаемся к следующей строке System.out.println(). Вот почему мы помещаем его в цикл for с i.

В вашей ситуации нам нужно немного подправить этот код, чтобы иметь возможность печатать числа по бокам и это пространство в верхнем левом углу.

Объяснение в комментариях к моему коду.

public class Question_55386466{

        static int X = 6;
        static int Y = 7;

        public static void printGrid() {
            System.out.print("  ");         // Printing the space on the top left corner
            for (int i = 0; i < X; i++) {
                if (i > 0) {                // Printing the numbers column on the left, taking i>0 to start from the second line (i == 1)
                    System.out.println();   // Going to the next line after printing the whole line
                    System.out.print(i - 1);//Printing the numbers of the column. Taking i-1 because we start the count for i == 1 not 0
                }
                for (int j = 0; j < Y; j++) {
                    if (i == 0)
                        System.out.print(j + "  ");//Print the first line numbers.
                    else
                        System.out.print(" * "); //if the line isn't the first line(i == 0), print the asterixes.

                }

            }
        }

Вы всегда можете отредактировать значения X и Y и получить желаемый результат.

И позже вы можете указать этому методу свой массив в качестве параметра и напечатать каждый элемент вместо звездочек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...