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