4 回答

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
因?yàn)榻K端正在等待某個(gè)值,所以在這一行中:
Scanner scan = new Scanner(System.in); int seconds = scan.nextInt();
基本上,您正在創(chuàng)建一個(gè) Scanner 對象,并聲明一個(gè) int 變量等待一個(gè)值(在本例中是下一個(gè)整數(shù))來執(zhí)行某些操作。
只需在終端中輸入一些整數(shù),它就應(yīng)該可以正常工作。

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
該解決方案已經(jīng)存在于其他答案中,但為什么是InputMismatchException
這個(gè)答案的目的。
從文檔中,
例如,以下代碼允許用戶從 System.in 讀取數(shù)字:
Scanner sc = new Scanner(System.in); int i = sc.nextInt();
為了nextInt()
公共 int nextInt()
將輸入的下一個(gè)標(biāo)記掃描為 int。
拋出:
InputMismatchException
- 如果下一個(gè)標(biāo)記與 Integer 正則表達(dá)式不匹配,或者超出范圍
這里的“clear”不匹配Integer的正則表達(dá)式。
由于您沒有向nextInt()
方法傳遞任何基數(shù),因此它預(yù)計(jì)輸入只有 0-9(十進(jìn)制數(shù)字系統(tǒng) - 默認(rèn)為基數(shù) 10)。如果是的話nextInt(16)
,它將接受任何十六進(jìn)制(0-F,基數(shù) 16)數(shù)字等。
值得注意的是,在另一種情況下,您可以獲得相同的異常,如果input > Integer.MAX_VALUE
.

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
在終端中,掃描儀正在等待用戶輸入 int 類型,您需要在終端中輸入秒。
顯示錯(cuò)誤是因?yàn)槟斎氲氖?String 類型值,但掃描儀需要 int 類型。
希望這能解決這個(gè)問題。

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
您需要提示用戶輸入以秒為單位的時(shí)間,以便您的掃描儀實(shí)際上可以為您的秒數(shù)輸入一些內(nèi)容。做這樣的事情:
System.out.println("Enter seconds to convert"); int seconds = scan.nextInt();
添加回答
舉報(bào)