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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

有一個(gè)自己寫代碼時(shí)的問題

while (true) {

try {

player1.ID = console.nextInt();

} catch (Exception e) {

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

continue;

// TODO: handle exception

}

break;

}

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

正在回答

3 回答

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

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

Edward_Xie 提問者

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

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

try {

String str = console.next();

int id = Integer.parseInt(str);

} catch (Exception e) {

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

continue;

}


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

Edward_Xie 提問者

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

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

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

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

public ?void 類(){

try {

int player1.ID = console.nextInt();

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

Exception e=new Exception();

throw e;

}

} catch (Exception e) {

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


}finally{

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

對(duì)象名.類();

}


}


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

小黃弟弟斗魚710373直播lol

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

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

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

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

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

舉報(bào)

0/150
提交
取消

有一個(gè)自己寫代碼時(shí)的問題

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

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

幫助反饋 APP下載

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

公眾號(hào)

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