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
添加回答
舉報