4 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
您的代碼使用 Java 1.8 從控制臺(tái)運(yùn)行得很好。
但是,在等號(hào)的左側(cè)和右側(cè)重復(fù)使用相同的指針可能會(huì)引入一些奇怪的行為。我專門談?wù)撨@一行:
s2=s+s2;
s2
本身已經(jīng)是一個(gè)指針,它指向內(nèi)存中分配的對(duì)象。并且您試圖在訪問該指針的同時(shí)重新分配它。話雖這么說,此類問題通常在現(xiàn)代 Java 中處理得很好,所以我不確定您正在運(yùn)行哪個(gè)版本以及在哪個(gè) IDE(如果有)下運(yùn)行。
但是,請(qǐng)注意,您根本不需要這樣做。您可以簡(jiǎn)單地打印您想要連接的內(nèi)容s2
:
System.out.println("Java "+s2);
不需要重新分配,也沒有s1
必要。

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
它將是 System.out.println(s + s2);
啟動(dòng)并聲明一個(gè)新變量而不是重用 s2 會(huì)更明智。你可以使用 s3 = s + s2;

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
在我看來,唯一的可能性是,如果您的輸入在輸入字符串中有可用的結(jié)束行字符。您是鍵入輸入還是使用復(fù)制粘貼進(jìn)行輸入?如果是,請(qǐng)嘗試通過鍵入每個(gè)字符來手動(dòng)輸入。

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
嘗試了這個(gè)并執(zhí)行了:
System.out.printf(s);
while(sc.hasNext()==true)
{
s2=sc.next(); System.out.printf(s2+" ");
}
添加回答
舉報(bào)