第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

關(guān)于ID輸入非整數(shù)異常處理問題

while(true){
try{
this.ID=sr1.nextInt();
break;
}
catch(Exception e){
System.out.println("輸入錯誤請重新輸入:");
continue;
}
}

這樣的話我輸入一個字母就會陷入死循環(huán)

輸入錯誤請重新輸入:
輸入錯誤請重新輸入:
輸入錯誤請重新輸入:
輸入錯誤請重新輸入 :
不停的死循環(huán)

但我從網(wǎng)上看了一個解決辦法:在catch語句中加了句String a=sr1.next();如下

while(true){
try{
this.ID=sr1.nextInt();
break;
}
catch(Exception e){
System.out.println("輸入錯誤請重新輸入:");
String a=sr1.next();
continue;
}
}

這樣就搞定了運行結(jié)果如下:

http://img1.sycdn.imooc.com//5825c0800001bfb306970688.jpg

這是什么原理?求解

正在回答

3 回答

這個問題我以前遇到過,你要在catch語句里面重置Scanner對象,所以,你只需要在catch語句里面加上雖然sr1 = new Scanner(System.in);就可以了。為什么要這樣子呢,因為如果不重置Scanner對象sc1將會總在while死循環(huán) try catch,原因是Scanner對象發(fā)生異常后就不能再被使用,所以一直報異常,編程了死循環(huán).

望采納,謝謝。

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

達(dá)文西H 提問者

非常感謝!
2016-11-13 回復(fù) 有任何疑惑可以回復(fù)我~

是這個意思。我來總結(jié)一下,異常發(fā)生后,原緩沖區(qū)的錯誤字符不能加載到掃描器中以至停留在緩沖區(qū),第二次循環(huán)開始后,try中的str.next()方法又被調(diào)用,掃描器掃描到停留在緩沖區(qū)的錯誤字符,又捕捉到異常并執(zhí)行catch語句.....周而復(fù)始,這就是出現(xiàn)死循環(huán)的原因。對于這種情況,我們可以在第二次循環(huán)開始之前也就是catch語句塊中的continue之前重新創(chuàng)建一個掃描器對象清空緩沖區(qū)。

0 回復(fù) 有任何疑惑可以回復(fù)我~

原因不是Scanner發(fā)生異常后就不能再被使用了吧,否則為什么沒有new一個Scanner直接在catch語句中加了句String a=sr1.next()就OK了,其實是Scanner拋出異常后原本從鍵盤輸入的字符串還在輸入流中所以要String a=sr1.next()這條語句把字符串讀出來要不然直接到下一次循環(huán)this.ID=sr1.nextInt();它讀的還是剛剛的字符串然后就死循環(huán)

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕粉4033208

是這個意思。我來總結(jié)一下,異常發(fā)生后,原緩沖區(qū)的錯誤字符不能加載到掃描器中以至停留在緩沖區(qū),第二次循環(huán)開始后,try中的str.next()方法又被調(diào)用,掃描器掃描到停留在緩沖區(qū)的錯誤字符,又捕捉到異常并執(zhí)行catch語句.....周而復(fù)始,這就是出現(xiàn)死循環(huán)的原因。對于這種情況,我們可以在第二次循環(huán)開始之前也就是catch語句塊中的continue之前重新創(chuàng)建一個掃描器對象清空緩沖區(qū)。
2017-04-05 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
Java入門第三季
  • 參與學(xué)習(xí)       409768    人
  • 解答問題       4510    個

Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧

進(jìn)入課程

關(guān)于ID輸入非整數(shù)異常處理問題

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號