#java #loops #newline
#java #петли #новая строка
Вопрос:
int exponent = Integer.parseInt(txtExponent.getText());
int base = Integer.parseInt(txtBase.getText());
int n = Integer.parseInt(txtExponent.getText());
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= n; i ) {
sb.append( base " to the power of " i "=" "n") //no new line
.append(System.lineSeparator());
}
Я пытаюсь создать новую строку для каждого нового цикла, например, в степени 3, новую строку в степени 4. Но это не сработает.
input txtOutput.settext (sb)
ожидаемый результат:
-to the power of 4=
-to the power of 5=
-to the power of 6=
etc
Фактический объем производства:
to the power 4= to the power of 5= to the power of 6=
Комментарии:
1. Как вы думаете, почему это не работает? Как вы изучаете содержимое этого StringBuilder?
2. он не работает, потому что он повторяет цикл один за другим (5 в степени 3, 5 в степени 6) вместо создания новой строки для каждого (5 в степени 3, новая строка 5 в степени 4)
3. Итак, как вы изучаете содержимое этого StringBuilder? Потому что, если вы выполняете приведенный выше код, там наверняка есть символ новой строки.
4. Действительно, есть новая строка.
5. ваш код хорош, и
sb
переменная содержит васn
, вы увереныn
, что вам нужно создать новую строку?
Ответ №1:
Действительно, есть новые строки, как показано на приведенном ниже jshell (и даже без добавления System.LineSeparator(), в моем случае):
jshell> int n = 3
n ==> 3
jshell> int base = 2
base ==> 2
jshell> StringBuilder sb = new StringBuilder()
sb ==>
jshell> for (int i = 1; i<= n; i ) sb.append(base " to " i "=" "n");
jshell> sb.toString()
$12 ==> "2 to 1=n2 to 2=n2 to 3=n"
jshell> System.out.print(sb.toString())
2 to 1=
2 to 2=
2 to 3=
Комментарии:
1. Я думаю, вы неправильно поняли, когда я вывожу цикл в текстовом поле в печатает каждый цикл в одной строке вместо каждого цикла в отдельной строке
2. Что вы подразумеваете под «печатает каждый цикл»? Вы показали нам цикл, который создает одну текстовую строку с помощью StringBuilder . В показанном коде печать не выполняется. Если вы напечатаете встроенную строку, например, с помощью вызова
System.out.print(sb.toString())
, то она будет иметь несколько строк. Если вы используете строку для заполнения некоторого «текстового поля» (понятие, которого не существует в языке Java, предположительно, это какой-то графический интерфейс), то это зависит от «текстового поля» относительно того, что происходит с символами n . Вероятно, вам нужно показать этот код.3. Когда вы говорите «в текстовом поле», мы говорим о Swing? Java FX? Какая-то HTML-вещь на веб-странице? Если это HTML, вы можете ожидать, что символы новой строки будут подавлены.
4. извините, я говорю о swing, и я просто не понимаю, почему n не создает новую строку для каждого нового номера цикла, например, в степени 3, затем новую строку в степени 4
5. @Mr.Evan Пожалуйста, укажите входные данные, ожидаемый результат и фактический результат в вашем вопросе в виде текста.