解決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。
推薦閱讀:
- Java Scanner的使用和hasNextXXX()的用法說明
- Java控制臺輸入scanner的方法及代碼詳解
- 新手初學Java流程控制
- java編程學習輸入輸出詳解看完快速上手
- 在Java中Scanner的用法總結