Напечатайте числа 1-100 в 10 в Свинге - PullRequest
0 голосов
/ 12 октября 2018

Почему-то я не могу заставить свой код работать так, как я хочу.Моя задача - напечатать числа от 1 до 100 в 10 строках (Swing - не консоль!), Но числа находятся только в одной строке вместо 10 (ИГ 1-10, 11-20, 21-30 и т. Д.), Если яуберите строку в последнем "textLabel.setText (/////);".

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

Что я могу сделать, чтобы исправить код / ​​цикл?

int i; 
if (event.getSource() ==fåFramMönster){
    String gridPattern = ""; 
    for(i = 1; i <= 100; i++) {
        gridPattern = gridPattern + " " + Integer.toString(i); 
        textLabel.setText(gridPattern);
        if (i%10==0) {
            textLabel.setText(gridPattern + "\n");
        }
    }

Я пробовал в консоли, и он работает нормально (я получаю правильные результаты):

for(int k = 1; k <= 100; k++) {
    System.out.print(" " + k);
    if(k % 10 == 0)
        System.out.print("\n");
}

1 Ответ

0 голосов
/ 12 октября 2018

Ваш код не работает, потому что setText заменяет содержимое, поэтому новая строка, добавленная setText(gridPattern + "\n"), отбрасывается при добавлении следующего значения.

Вы никогда не вставляете \n в самом значении gridPattern.

Код должен быть:

String gridPattern = "";
for (int i = 1; i <= 100; i++) {
    gridPattern = gridPattern + " " + Integer.toString(i); 
    if (i % 10 == 0) {
        gridPattern = gridPattern + "\n";
    }
}
textLabel.setText(gridPattern);

Еще лучше, если вы узнали о StringBuilder:

StringBuilder buf = new StringBuilder();
for (int i = 1; i <= 100; i++) {
    buf.append(' ').append(i);
    if (i % 10 == 0) {
        buf.append('\n');
    }
}
textLabel.setText(buf.toString());

Как упоминалось во многих комментариях, для форматирования текста он должен быть HTML, поэтому должен начинаться с <html>, заканчиваться </html>, а строки должны разделяться "<br>".

StringBuilder buf = new StringBuilder();
buf.append("<html>");
for (int i = 1; i <= 100; i++) {
    buf.append(i).append(i % 10 == 0 ? "<br>" : " ");
}
buf.append("</html>");
textLabel.setText(buf.toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...