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

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

有一個自己寫代碼時的問題

while (true) {

try {

player1.ID = console.nextInt();

} catch (Exception e) {

System.out.println("請輸入數(shù)字ID!");

continue;

// TODO: handle exception

}

break;

}

這里定義的player1.ID是int型的,希望達(dá)到的效果是輸入非數(shù)字型時提示用戶“請輸入數(shù)字ID”,通過continue進(jìn)行下一輪循環(huán)以便重新輸入,可是這個代碼當(dāng)我輸入非數(shù)字時,程序不斷的循環(huán)打出“請輸入數(shù)字ID”,無限循環(huán),直接跳過 了輸入步驟,這是為什么呢?

正在回答

3 回答

0.0,,這就不是回復(fù)樓了吧?? 233333

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

Edward_Xie 提問者

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

用Scanner接收鍵盤輸入的值,如果發(fā)生異常會一直返回這個異常值,這里要用String接收然后轉(zhuǎn)成int.

try {

String str = console.next();

int id = Integer.parseInt(str);

} catch (Exception e) {

System.out.println("請輸入數(shù)字ID!");

continue;

}


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

Edward_Xie 提問者

謝謝,用你的方法問題解決了。 還有些問題想和你討論下,為什么scanner會一直返回異常值?我自己查的另一種代碼也成功實現(xiàn)了,我原來的代碼的console是在類的構(gòu)造方法中初始化的, 這段代碼主要就是每次輸入都先console=new Scanner(System.in);然后就不會自己一直無腦循環(huán)了,是不是因為出現(xiàn)異常后異常值會保存在console中?然后每次都開辟新的空間給console,就可以相應(yīng)的避免上一次的異常值?
2016-08-11 回復(fù) 有任何疑惑可以回復(fù)我~
#2

Edward_Xie 提問者 回復(fù) 染紅_街道

非常感謝!全弄懂了!不過回復(fù)樓要怎么采納。。
2016-08-11 回復(fù) 有任何疑惑可以回復(fù)我~

因為try是執(zhí)行一個方法,catch只是捕獲異常,不要用coutinue,要實現(xiàn)你的功能,你可以在catch塊里加一個if判斷,然后直接拋出一個異常,然后用finally來處理。代碼修改如下:

public ?void 類(){

try {

int player1.ID = console.nextInt();

if(//你自己實現(xiàn)判斷,輸入的不是數(shù)字){

Exception e=new Exception();

throw e;

}

} catch (Exception e) {

System.out.println("請輸入數(shù)字ID!");


}finally{

類 ?對象名 =new 類(); ? //在本類中創(chuàng)建一個對象

對象名.類();

}


}


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

小黃弟弟斗魚710373直播lol

如果你繼續(xù)要用while循環(huán),你也可以再用一個finally塊,試試把coutinue放在finally塊里
2016-08-10 回復(fù) 有任何疑惑可以回復(fù)我~
#2

Edward_Xie 提問者 回復(fù) 小黃弟弟斗魚710373直播lol

不行,我的關(guān)鍵就在于我要使用while循環(huán)直到輸入正確,finally里的東西一定會執(zhí)行,continue放進(jìn)去就會無限循環(huán)了,break變成不可達(dá)
2016-08-11 回復(fù) 有任何疑惑可以回復(fù)我~
#3

染紅_街道 回復(fù) Edward_Xie 提問者

catch語句塊跳回循環(huán)之前加一句 next(); 把儲存在緩沖區(qū)的非數(shù)字?jǐn)?shù)據(jù)給清除掉,然后就可以了 你試試
2016-08-11 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

有一個自己寫代碼時的問題

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

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

幫助反饋 APP下載

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

公眾號

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