Я пытаюсь центрировать текст из 4 строк, я ищу простое решение. Конечный результат на изображении ниже - PullRequest
0 голосов
/ 11 ноября 2018

Текст по центру

Вот как я хочу, чтобы текст выглядел после того, как он отформатирован.

static void printCentered(String text) {
    String[] textArray;
    int maxi = -1;
    textArray = new String[5];
    textArray[0] = "Drei Chinesen mit dem Kontrabass";
    textArray[1] = "sassen auf der Strasse und erzaehlten sich was.";
    textArray[2] = "Da kam ein Mann: Ja was ist denn das?";
    textArray[3] = "Drei Chinesen mit dem Kontrabass.";
    for (int i = 0; i <= 4; i++)
        if (textArray[i].length() > maxi)
            maxi=textArray[i].length();
    for(int i=0; i<= 4; i++)
        if (maxi-textArray[i].length()!=0)
        {
            int diff=maxi-textArray[i].length();
            System.out.print(" ");
            System.out.println(textArray[i]);
        }

}

Я пытаюсь сделать это, просто выяснивкакая самая большая линия и идет оттуда, вставляя черные пробелы слева.Подскажите, пожалуйста, что я делаю не так?

1 Ответ

0 голосов
/ 11 ноября 2018

Были проблемы с вашим кодом:

  1. Вы выделили память для 5 строк, но поместили только 4 значения. По той же причине это вызывало NullPointerException.
  2. Я не понял значения параметра text для функции; он нигде не использовался, поэтому я удалил его.
  3. Правильная логика для центрирования текста состоит в том, чтобы найти строку максимальной длины, затем найти длину строки для центрирования и затем вычислить количество пробелов, которые нужно вставить перед строкой, используя следующую формулу: (maxLen / 2) - (textLen / 2)

Вот код:

    static void printCentered() {
        String[] textArray = new String[5];
        int maxi = -1;
        textArray[0] = "Drei Chinesen mit dem Kontrabass";
        textArray[1] = "sassen auf der Strasse und erzaehlten sich was.";
        textArray[2] = "Da kam ein Mann: Ja was ist denn das?";
        textArray[3] = "Drei Chinesen mit dem Kontrabass.";
        textArray[4] = "Hello World!";
        for (int i = 0; i <= 4; i++)
            if (textArray[i].length() > maxi)
                 maxi = textArray[i].length();
        final int maxiByTwo = maxi / 2;
        for (int i = 0; i <= 4; i++) {
            final int textLenByTwo = textArray[i].length() / 2;
            final int diff = maxiByTwo - textLenByTwo;
            for (int j = 0; j < diff; j++)
                System.out.print(" ");
            System.out.println(textArray[i]);
        }
    }

Вот ссылка на рабочий код: https://ideone.com/QiNIu1

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