解決Java的InputMismatchException異常

一、寫在前面

InputMismatchException異常是輸入不匹配異常,即輸入的值數據類型與設置的值數據類型不能匹配。

二、異常的出現原因

在使用Scanner進行輸入時,報出InputMismatchException異常,其代碼如下:

public static void main(String[] args) 
    {
		Scanner sc=new Scanner(System.in);
		System.out.println("請輸入一個數字:");
		int x=sc.nextInt();
		System.out.println("請輸入一個字符串:");
		String str=sc.nextLine();
		System.out.println("請再輸入同一個數字:");
		int y=sc.nextInt();
    }

產生InputMismatchException異常的原因是:nextLine()不能用在nextInt後面。因為nextLine()方法是返回的是Enter鍵之前的所有字符,在使用瞭nextInt() 方法之後在其後輸入的空格鍵、Tab鍵或Enter鍵等視為分隔符或結束符,其仍在緩沖區內;若緊接著使用nextLine() ,則nextLine() 自動讀取Enter等作為其結束符,則無法從鍵盤輸入值,強行輸入會報出InputMismatchException異常。

三、異常的解決

方法一:

我們可以在nextInt()後面加上一個nextLine()用於過濾其後面的Enter等結束符。

方法二:

我們可以不使用nextLine()方法,直接使用next()方法代替。

其修改代碼如下:

public static void main(String[] args) 
    {
		Scanner sc=new Scanner(System.in);
		System.out.println("請輸入一個數字:");
		int x=sc.nextInt();
		sc.nextLine();//方法一
		System.out.println("請輸入一個字符串:");
		String str=sc.nextLine();//String str=sc.next();為方法二
		System.out.println("請再輸入同一個數字:");
		int y=sc.nextInt();
    }

PS:eclipse使用小技巧:

在eclipse中我們可以直接打出 syso後再按住 Alt+/ 就可以直接寫出輸出語句

System.out.println("");

到此這篇關於解決Java的InputMismatchException異常的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: