Попытка напечатать несколько 2D-массивов в одной строке строка за строкой - PullRequest
0 голосов
/ 24 марта 2019

У меня есть 10 двумерных массивов строк, которые при распечатке выглядят как показания цифровых часов. Проблема в том, что я не могу понять, как распечатывать последовательные массивы рядом друг с другом построчно. У меня есть все массивы, которые мне нужны для представления правильных чисел, но фактическая печать идет не очень хорошо ...

Подсказка: https://imgur.com/f4tr53K

public static void digital(String [][] first, String[][] second, String[][] colon, String[][] third, String[][] fourth)
   {
      for(int i = 0; i < 3; i++)
      {
         for(int j = 0; j < 6; j++)
         {
            System.out.print(first[j][i]);
            System.out.print(second[j][i]);
            System.out.print(colon[j][i]);
            System.out.print(third[j][i]);
            System.out.print(fourth[j][i]);  
         }
         System.out.println();
      }
   } //method to print the clock out

ожидается: правильное считывание цифровых часов

фактический: этот беспорядочный беспорядок

  | ||  | |        || ||||
 - --  -        ----  -       
 - --       |   - --       |

Ответы [ 2 ]

1 голос
/ 24 марта 2019

Во-первых, я бы порекомендовал переписать цифровой формат как более универсальный метод.Передайте массив цифр или ArrayList цифр.Это также упростит вашу жизнь в будущем!

public static void digital(ArrayList<String[][]> arrays) {
    // we don't have anything to print
    if (arrays.size() == 0)
        return;

    // for each column
    for (int i = 0; i < arrays.get(0).length; i++) {

        // for each digit
        for (int j = 0; j < arrays.size(); j++) {
            String[][] arr = arrays.get(j);

            // print current row of a current digit
            for (int k = 0; k < arr[0].length; k++) {
                System.out.print(arr[i][k]);
            }
            // if you need spacing between digits, you can add one more
            // System.out.print(' ');
        }
        System.out.println();
    }
}

Это пример того, как вы можете запустить эту функцию:

public static void main(String[] args) {
    ArrayList<String[][]> list = new ArrayList<>();

    list.add(new String[][]{
            {" ", "-", " "},
            {"-", " ", "-"},
            {"-", " ", "-"},
            {"-", " ", "-"},
            {" ", "-", " "},
    });

    list.add(new String[][]{
            {" ", " ", " "},
            {" ", "-", " "},
            {" ", " ", " "},
            {" ", "-", " "},
            {" ", " ", " "},
    });

    list.add(new String[][]{
            {" ", "-", " "},
            {"-", " ", "-"},
            {"-", " ", "-"},
            {"-", " ", "-"},
            {" ", "-", " "},
    });

    digital(list);
}

Эта функция масштабируется до любого размера цифр, простоубедитесь, что количество столбцов всех цифр совпадает.

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

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

Внешний цикл представляет строки часов.Здесь вы хотите напечатать каждый элемент в first[j], затем каждый элемент в second[j] и так далее.Обратите внимание, что печать происходит в первой строке вашего вывода.Не забудьте добавить пробелы между ними.После окончания первой строки начните новую строку и повторяйте, пока не будет напечатана каждая строка.

Есть способы сделать это в меньшем количестве строк, но легче понять, как обрабатывать печать в командной строке таким образом.

public static void digital(String [][] first, String[][] second, String[][] colon, String[][] third, String[][] fourth) {

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

        for(in i = 0; i < 3; i++) {
            System.out.print(first[j][i]);
        }
        System.out.print(" ");

        for(in i = 0; i < 3; i++) {
            System.out.print(second[j][i]);
        }
        System.out.print(" ");

        for(in i = 0; i < 3; i++) {
            System.out.print(colon[j][i]);
        }
        System.out.print(" ");

        for(in i = 0; i < 3; i++) {
            System.out.print(third[j][i]);
        }
        System.out.print(" ");

        for(in i = 0; i < 3; i++) {
            System.out.print(fourth[j][i]);
        }
        System.out.println();
    }

} //method to print the clock out
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...