System.out.println为什么打印新行而System.out.print什么都不打印?

时间:2017-07-25 18:05:51

标签: java

我遇到分割功能问题。我不知道它是如何运作的。

这是我的源代码:

// Using println to print out the result
String str  = "         Welcome       to    Java     Tutorial     ";
str = str.trim();
String[] arr = str.split(" ");
for (String c : arr) {
    System.out.println(c);
}

//Using print to  print out the result
String str  = "         Welcome       to    Java     Tutorial     ";
str = str.trim();
String[] arr = str.split(" ");
for (String c : arr) {
    System.out.print(c);
}

,结果是:Result

第一个是使用println时的结果,第二个是使用print时的结果,

我不明白为什么空格出现在println中,而print中却没有出现空格。有谁可以帮我解释一下?

3 个答案:

答案 0 :(得分:11)

由于字符串中有很多空格,如果查看split函数的输出,结果数组看起来像

""

所以如果你仔细观察它们就是空的String println("")

执行print("")时,它会打印一条没有字符串的行。

然而,当你执行public class TreeviewItem { public string Text { get; set; } public int Value { get; set; } public bool Collapsed { get; set; } public TreeviewItem[] Children { get; set; } } 时,它不再具有该字符串的可见性,并且看起来没有打印出来。

如果要将它们分开,无论它们之间是否有空格,请用空格分隔它们。

最后,trim()不会删除String中的空格。它只能修剪第一个和最后一个空格。

答案 1 :(得分:4)

您正在做的是按每个单独的空白分割。因此,对于字符串中的每个空格,它将被拆分为单独的字符串如果要仅拆分单词,则可以使用空白正则表达式:

String[] arr = str.split("\\s+");

这将解决您正在打印的连续空格的问题。

此外,当您使用print代替println时,您的打印值不会延续到下一行。因此,当你加注println("")时,你只需要换行。

答案 2 :(得分:0)

println()方法在新行中打印所有内容,但print()方法在同一行中打印所有内容。

所以,当你按空格(“”)拆分你的字符串时, 对于第一个,字符串分裂为每个空格。因此,每次打印时都会出现新行。您无法看到任何新行,因为您正在打印:""这个。因为您的代码是:

System.out.println("");

但是对于第二个字符串,字符串是为每个空格分割,但是你使用的是print()方法,这就是为什么它不会转到新行。

你可以通过正则表达式来解决这个问题。 您可以使用此正则表达式:\\s+

所以,你必须写:

String[] arr = str.split("\\s+");