4 回答
TA贡献1828条经验 获得超3个赞
从集合中创建带有分隔符的字符串时遇到的一个常见问题是如何避免多余的前导或尾随空格。这就是额外的 if 语句所达到的效果。还有其他几种方法可以解决这个问题,下面我提供两种选择。
你也可以这样做:
// first build the output string using a StringBuilder
StringBuilder sb = new StringBuilder();
while(input.hasNext()) {
sb.append(input.nextLine()).append(" ");
}
// if there was input, the StringBuilder will have an extra space at the end
if (sb.length() > 0) {
// in that case remove the space and print the result
sb.deleteCharAt(sb.length() - 1);
System.out.println(sb);
}
或者为了更有趣,递归解决方案:
private String read(Scanner input) {
if (!input.hasNext()) {
return "";
}
String head = input.nextLine();
if (input.hasNext()) {
return head + " " + read(input);
}
else {
return head;
}
}
TA贡献1859条经验 获得超6个赞
唯一的尊重是在第一个代码中
if(input.hasNext())
System.out.print(input.nextLine());
while (input.hasNext()){
System.out.print(" " + input.nextLine());
}
}
您将打印 " " -space- 然后是字符串,但在第二个中,您将从行首开始,然后它会在单词之间放置空格,所以
“空间”第一第二第三
是从
first second third // 开头没有空格
TA贡献1898条经验 获得超8个赞
问题是输出将以空格开头。您可以将空间放在最后,它会正常工作:
System.out.print(input.nextLine() + " ");
如果这仍然导致问题,也许这会起作用:
while(input.hasNext()){
System.out.print(input.nextLine());
if(input.hasNext())
System.out.print(" ");
}
我没有测试过它,但它应该在除最后一行之外的每一行附加一个空格。
TA贡献1820条经验 获得超10个赞
唯一明显的区别是正确答案不会产生以空格开头的输出。
使用此文件:
foo bar baz
您的代码将具有以下输出(注意“foo”前面的空格):
foo bar baz
答案的代码将有这个(“foo”前面没有空格):
foo bar baz
添加回答
举报