Как создать таблицу с использованием 2D-массива в Java?

#java #multidimensional-array

Вопрос:

введите описание изображения здесь

Привет 🙂

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

 Scanner scanner = new Scanner(System.in);
int row = scanner.nextInt();
int seat = scanner.nextInt();

char[][] array = new char[row][seat];

System.out.print("  ");
for (int i = 1; i < seat   1; i  )
    System.out.print(i   " ");
    
System.out.println();

for (int i = 0; i < array.length; i  ) {
    System.out.print("  ");
    for (int j = 0; j < array[i].length; j  )
        System.out.print('S'   " ");

    System.out.println();
}
 

Ответ №1:

Это больше похоже на простую задачу программирования, чем на вопрос java. Существует много уродливых решений, но мы постараемся следовать принятым вами правилам.

Подумайте о массивах и циклах, которые вы используете шаг за шагом. Первый цикл

 for (int i = 1; i < seat   1; i  ) {
        if (i == 1) {
            System.out.print("  ");
        }
        System.out.print(i   " ");
}
 

Предпочтительным способом является отсчет от 0, но этот цикл просто заполняет первую строку числами.

Во втором цикле i все еще ваш счетчик строк, и j это просто счетчик столбцов:

 for (int i = 0; i < array.length; i  ) {
        for (int j = 0; j < array[i].length; j  ) {
            if (j == 0) {
                System.out.print("  ");
            }
            System.out.print('S'   " ");
        }
    System.out.println();
}
 

Ваш вопрос действительно таков: как писать числа в первом столбце строка за строкой. На этот вопрос есть простой ответ, используя только что предоставленный вами код. В вашем коде, если столбец j равен 0, то сейчас вы просто пишете пустое пространство, но вместо этого вы хотите записать номер строки i . Я надеюсь, что это даст вам ключ к разгадке. Попробуйте решить ее самостоятельно. Если вы все еще не сможете, то:

Измените, если тело секунды для во втором цикле на System.out.print(i » «);