Scanner?scanner?=?new?Scanner(System.in);
int?i?=?scanner.nextInt();
System.out.println(i);
int?j?=?scanner.nextInt();
System.out.println(j);這樣是通過一個scanner對象兩次輸入分別給兩個變量賦值,沒有問題,執(zhí)行后一切正常。Scanner?scanner=new?Scanner(System.in);
while(true){
???try?{
???//Scanner?scanner=new?Scanner(System.in);
???System.out.println("請輸入玩家1的ID:");
???playerOne.id=scanner.nextInt();
???break;
???}?catch?(Exception?e)?{
???System.out.println("你應該輸入一個整數(shù)!");
???}
???}這是剛剛寫的一段代碼(沒有標注的那一行),先創(chuàng)建一個scanner對象,然后try里面輸入一個數(shù),如果是整數(shù)就賦值給一個對象的參數(shù)(必須是int類型),并且break跳出循環(huán);但如果不是整數(shù)型就異常處理重新循環(huán)。但執(zhí)行后,輸入整數(shù)正常,但輸入一個非整數(shù)字符串就會無限循環(huán)“你應該輸入一個整數(shù)!”這句話。后面我發(fā)現(xiàn),把scanner對象創(chuàng)建在循環(huán)里面(就是標注的那一行),就沒有錯誤,請問這是為什么?我之前理解的是scanner對象可以重復使用,為什么這里卻要每次重新創(chuàng)建?
添加回答
舉報
0/150
提交
取消