有一個(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),直接跳過 了輸入步驟,這是為什么呢?
2016-08-11
0.0,,這就不是回復(fù)樓了吧?? 233333
2016-08-10
用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;
}
2016-08-10
因?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ì)象名.類();
}
}