1 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個贊
聽起來您遇到了行尾問題。
Scanner.nextLine()
將從輸入中讀取一行加上行分隔符,然后丟棄行分隔符,然后返回它讀取的行的實(shí)際內(nèi)容。
行分隔符可以是一個 LF 字符 (?'\n'
) 或一個 CR 字符 (?'\r'
),或者一個 CR 字符后跟一個 LF 字符,或者是幾種很少使用的單字符 Unicode 行結(jié)尾之一。這種分隔符的多樣性反映了各種操作系統(tǒng)如何表示文本文件的歷史變化。嘗試Scanner
通過接受所有可能性來提供幫助,無論它恰好在哪個平臺上運(yùn)行。
如果我們假設(shè)當(dāng)您粘貼測試數(shù)據(jù)時,您觀察到的行為會以某種方式在您粘貼的程序和您要粘貼到的控制臺之間的交互導(dǎo)致您的程序被賦予以單個 CR 結(jié)尾的行.?然后Scanner.nextLine()
需要查看它給出的下一個字符是否是 LF——因?yàn)槿绻?,那么它也?yīng)該吃掉它,作為行尾的一部分。因此它只會在看到另一個角色后才會返回。
另一方面,當(dāng)您手動輸入時,您的回車鍵可能會產(chǎn)生 LF 或 CR-LF 組合。nextLine()
一旦看到行結(jié)束,它們中的任何一個都會很高興。
如果你一行一行地粘貼這些行,你應(yīng)該能夠檢驗(yàn)這個假設(shè)。然后您可能會看到第一行的翻譯僅在您粘貼第二行之后出現(xiàn),依此類推。
您可能不需要為了自動判斷編程挑戰(zhàn)而擔(dān)心這一點(diǎn)。判斷系統(tǒng)不會將測試輸入粘貼到您的程序中,但可能會將其通過管道傳輸,這意味著您的程序可以在預(yù)期生成之前看到所有輸入,直到最后的文件結(jié)束指示輸入。在那種環(huán)境下它應(yīng)該可以正常工作。
添加回答
舉報(bào)