11 回答

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超2個(gè)贊
scanner在要求用戶輸入的時(shí)候,其實(shí)是在內(nèi)存中保存了用戶輸入,輸入字母等就會(huì)存入該段內(nèi)存。當(dāng)我們用input.nextInt()調(diào)用時(shí),就不能調(diào)用出來,因?yàn)樗皇俏覀円{(diào)用的int類型,這時(shí)就會(huì)報(bào)輸入不匹配錯(cuò)誤??墒菃栴}就在這兒,我們用input.nextInt()調(diào)用沒把該段內(nèi)存中的東西提出來,他就會(huì)一直占用這段內(nèi)存,導(dǎo)致我們二次輸入時(shí),就不會(huì)再要求用戶輸入了,他會(huì)繼續(xù)試圖調(diào)用該段內(nèi)存數(shù)值。
???所以解決辦法就是我們清空該段內(nèi)存,或者把該段內(nèi)存中的數(shù)值取出。所以我們?cè)赾atch塊中使用 input.next(); 就可以解決。因?yàn)閕nput.next()是得到字符串所以可以把該段內(nèi)存中的值取出。因此最終可通過如下方式解決
????try?{ ????????????????temp=input.nextInt(); ????????????}?catch?(Exception?e)?{ ???????????? input.next(); ????????????????System.err.println("請(qǐng)按要求輸入!"); ????????????????continue; ????????????}
其余的不變!

TA貢獻(xiàn)18條經(jīng)驗(yàn) 獲得超16個(gè)贊
while(true)···這是恒成立的,當(dāng)然一直死循環(huán)啦,改成temp>=0試試

TA貢獻(xiàn)96條經(jīng)驗(yàn) 獲得超118個(gè)贊
要學(xué)會(huì)Debug
設(shè)置斷點(diǎn),并Debug.
一步一步走下去,觀察變量。然后就能發(fā)現(xiàn)錯(cuò)誤。

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊
我是想在里面的代碼中跳出,現(xiàn)在的情況是,一但有異常,就一直循環(huán),不會(huì)給我輸入的機(jī)會(huì)。

TA貢獻(xiàn)8條經(jīng)驗(yàn) 獲得超8個(gè)贊
出現(xiàn)異常時(shí),不應(yīng)該用continue,用break就可以跳出循環(huán)了,continue是進(jìn)入下一次循環(huán)
同時(shí)你這段程序的代碼邏輯有問題
添加回答
舉報(bào)