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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于JAVA Scanner類的nextInt方法接收到非法輸入問題

關于JAVA Scanner類的nextInt方法接收到非法輸入問題

夜海風 2015-05-06 23:39:00
我想用Scanner接收一個整型輸入,并在出現(xiàn)輸入非整型情況時拋出異常提示,同時要求用戶重新輸入,用了如下代碼:import java.util.Scanner;public class HelloWorld{? ? public static void main(String[] args){? ? ? ? int i = 0;? ? ? ? Scanner sc = new Scanner(System.in);? ? ? ? System.out.println("請輸入數(shù)量:");? ? ? ? while(true) {? ? ? ? ? ? try {? ? ? ? ? ? ? ? i = sc.nextInt();? ? ? ? ? ? ? ? System.out.println("i="+i);? ? ? ? ? ? ? ? break;? ? ? ? ? ? } catch(Exception e) {? ? ? ? ? ? ? ? System.out.println("請輸入一個整型數(shù)字:");? ? ? ? ? ? }? ? ? ? }? ? }}執(zhí)行如下:請輸入數(shù)量:a請輸入一個整型數(shù)字:請輸入一個整型數(shù)字:請輸入一個整型數(shù)字:……在接收到一個非法輸入a時,程序重復不斷拋出異常提示“請輸入一個整型數(shù)字:”,而不能中斷接收新的輸入,請問這是為什么,錯在哪里?
查看完整描述

4 回答

?
慕娘4410084

TA貢獻1條經(jīng)驗 獲得超2個贊

while (true) {

try {

id1 = sc.nextInt();

break;

} catch (InputMismatchException e) {

System.out.println("請輸入整數(shù)型的ID:");

sc.next();// 讀取下一個值,如果不加這條語句,控制臺得到的還是你上次輸入的數(shù),再一次進入catch語句,所以會一直循環(huán)報錯

}

}


查看完整回答
2 反對 回復 2017-08-12
?
onelamp

TA貢獻1條經(jīng)驗 獲得超0個贊

同問,怎么解決這個問題呢?

查看完整回答
反對 回復 2015-10-29
?
viva_la_vida

TA貢獻1條經(jīng)驗 獲得超0個贊

sc .nextInt() 只會在找到匹配之后 才會 向前移動,因此每一次匹配仍然會在當前的輸入之中進行匹配

具體可以查看:

String java.util.Scanner.next(Pattern pattern)

Returns the next token if it matches the specified pattern. This method may block while waiting for input to scan, even if a previous invocation of hasNext(Pattern) returned true. If the match is successful, the scanner advances past the input that matched the pattern.


查看完整回答
反對 回復 2015-05-07
  • 4 回答
  • 0 關注
  • 5934 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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