料青山看我應(yīng)如是
2021-09-12 16:12:08
在使用 Java 的 nextInt() 方法時,我遇到了以下代碼:Scanner scan = new Scanner(System.in);int count = scan.nextInt();String string1 = scan.nextLine();我知道 string1 將包含一個空字符串。我的問題是為什么像下面這樣調(diào)用 nextLine 方法兩次會出錯:String string1 = scan.nextLine().nextLine();
3 回答

qq_笑_17
TA貢獻1818條經(jīng)驗 獲得超7個贊
這里:
String string1 = scan.nextLine().nextLine();
讓我們分解一下:
String string1 = scan.nextLine()
調(diào)用nextLine()
掃描儀。它返回一個String。
因此,您的代碼歸結(jié)為
String string1 = someOtherString.nextLine();
當(dāng)然,這是行不通的。因為 String 類不知道下一行,因此沒有這樣的方法!
記?。簰呙杵鞣祷匾粋€字符串,這是兩個非常不同的對象。
如果你從盒子里拿出一個雞蛋,你為什么會期望你可以從你得到的那個雞蛋中取出另一個雞蛋?!您可以從同一個盒子中取出兩個雞蛋,但不能從一個雞蛋中取出一個雞蛋。
最后:是的,有“流暢”API 的想法,它允許以“這種”方式鏈接方法調(diào)用。但是,可以只對被明確設(shè)計正是出于這個情況下工作。

慕尼黑8549860
TA貢獻1818條經(jīng)驗 獲得超11個贊
scannerObj.nextInt() 不讀取以下?lián)Q行符,因此第一個 nextLine(返回當(dāng)前行的其余部分) will always return an empty string.
這應(yīng)該有效:
int count = readInput.nextInt();
readInput.nextLine();
String input=readInput.nextLine();
添加回答
舉報
0/150
提交
取消