2 回答

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
這段代碼的問題似乎是你的輸入沒有Integer根據(jù)。s.hasNext()檢查可以轉(zhuǎn)換為 的輸入String。您可能應(yīng)該s.hasNextInt()在這里使用?;蛘吣梢詫⑵涓膕.nextInt()為s.next()將輸入作為String. 我提供兩種可能的解決方案,然后您可以決定哪一種滿足您的要求。
解決方案一:
ArrayList<Integer> list = new ArrayList<>();
while (s.hasNextInt()) {
list.add(s.nextInt());
}
在此解決方案中,您的代碼將僅作為Integer輸入。因?yàn)閟.hasNextInt()限制了輸入Integer值。如果遇到除該Integer值之外的任何內(nèi)容,則while循環(huán)將退出。
解決方案2:
ArrayList<String> list = new ArrayList<>();
while (s.hasNext()) {
list.add(s.next());
}
在此解決方案中,您的代碼將作為String輸入。"abc"無論您的輸入包含或7或等,它都不會(huì)失敗。33.32它將把它們?nèi)勘4鏋橐粋€(gè)String值。

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
所以問題是,每當(dāng)您從文件中讀取任何內(nèi)容時(shí),它都是string
循環(huán)內(nèi)的下一個(gè)格式,您正在獲取整數(shù)值,而輸入是字符串,這就是它給出的原因 InputMismatchException
添加回答
舉報(bào)