【问题标题】:I'm trying to create a new line but it's not working我正在尝试创建一个新行但它不起作用
【发布时间】:2020-11-26 17:46:05
【问题描述】:
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=

【问题讨论】:

  • 为什么你认为它不起作用?您如何检查此 StringBuilder 的内容?
  • 它不起作用,因为它一个接一个地重复循环(5 到 3 的幂 5 到 6 的幂),而不是为每个创建一个新行(5 到 3 的新第 5 行的 4 次方)
  • 那么你是如何检查这个 StringBuilder 的内容的呢?因为如果你运行上面的代码,里面肯定有一个换行符。
  • 确实有新行了。
  • 你的代码不错,sbvariable包含你\n,你确定\n是需要新建一行吗?

标签: java loops newline


【解决方案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=

【讨论】:

  • 当我在文本字段中输出循环时,我认为您误解了将每个循环打印在一行而不是每个循环在单独的行上
  • “打印每个循环”是什么意思?您已经向我们展示了一个使用 StringBuilder 创建一个文本字符串的循环。显示的代码中没有进行打印。 如果您打印构建的字符串,例如通过调用System.out.print(sb.toString()),那么它有多行。如果您使用字符串来填充一些“文本字段”(Java 语言中不存在的概念,可能是一些 GUI 的东西),那么它取决于“文本字段”会发生什么 \n 字符.您可能需要显示该代码。
  • 当您说“在文本字段中”时,我们指的是 Swing 吗?爪哇外汇?网页上的一些 HTML 内容?如果是 HTML,您可能会认为换行符会被禁止显示。
  • 对不起,我说的是摇摆,我只是很困惑为什么 \n 没有为每个新循环编号创建一个新行,例如 3 的幂,然后是一个新行的幂4
  • @Mr.Evan 请将输入、预期输出和实际输出以文本形式放入您的问题中。
猜你喜欢
  • 2019-11-03
  • 2020-06-14
  • 2021-05-27
  • 1970-01-01
  • 2022-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-12
相关资源
最近更新 更多