解決Java的InputMismatchException異常
一、寫在前面
InputMismatchException異常是輸入不匹配異常,即輸入的值數(shù)據(jù)類型與設(shè)置的值數(shù)據(jù)類型不能匹配。
二、異常的出現(xiàn)原因
在使用Scanner進(jìn)行輸入時(shí),報(bào)出InputMismatchException異常,其代碼如下:
public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("請(qǐng)輸入一個(gè)數(shù)字:"); int x=sc.nextInt(); System.out.println("請(qǐng)輸入一個(gè)字符串:"); String str=sc.nextLine(); System.out.println("請(qǐng)?jiān)佥斎胪粋€(gè)數(shù)字:"); int y=sc.nextInt(); }
產(chǎn)生InputMismatchException異常的原因是:nextLine()不能用在nextInt后面
。因?yàn)閚extLine()方法是返回的是Enter鍵之前的所有字符,在使用了nextInt() 方法之后在其后輸入的空格鍵、Tab鍵或Enter鍵等視為分隔符或結(jié)束符,其仍在緩沖區(qū)內(nèi);若緊接著使用nextLine() ,則nextLine() 自動(dòng)讀取Enter等作為其結(jié)束符,則無(wú)法從鍵盤輸入值,強(qiáng)行輸入會(huì)報(bào)出InputMismatchException異常。
三、異常的解決
方法一:
我們可以在nextInt()后面加上一個(gè)nextLine()用于過(guò)濾其后面的Enter等結(jié)束符。
方法二:
我們可以不使用nextLine()方法,直接使用next()方法代替。
其修改代碼如下:
public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("請(qǐng)輸入一個(gè)數(shù)字:"); int x=sc.nextInt(); sc.nextLine();//方法一 System.out.println("請(qǐng)輸入一個(gè)字符串:"); String str=sc.nextLine();//String str=sc.next();為方法二 System.out.println("請(qǐng)?jiān)佥斎胪粋€(gè)數(shù)字:"); int y=sc.nextInt(); }
PS:eclipse使用小技巧:
在eclipse中我們可以直接打出 syso后再按住 Alt+/ 就可以直接寫出輸出語(yǔ)句
System.out.println("");
到此這篇關(guān)于解決Java的InputMismatchException異常的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
如何兩步解決maven依賴導(dǎo)入失敗的問(wèn)題
這篇文章主要介紹了如何兩步解決maven依賴導(dǎo)入失敗的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07Struts2實(shí)現(xiàn)CRUD(增 刪 改 查)功能實(shí)例代碼
CRUD是Create(創(chuàng)建)、Read(讀取)、Update(更新)和Delete(刪除)的縮寫,它是普通應(yīng)用程序的縮影。接下來(lái)通過(guò)本文給大家介紹Struts2實(shí)現(xiàn)CRUD(增 刪 改 查)功能實(shí)例代碼,感興趣的朋友一起看看吧2016-06-06springboot結(jié)合全局異常處理實(shí)現(xiàn)登錄注冊(cè)驗(yàn)證
這篇文章主要介紹了springboot結(jié)合全局異常處理實(shí)現(xiàn)登錄注冊(cè)驗(yàn)證,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05在Web項(xiàng)目中手機(jī)短信驗(yàn)證碼實(shí)現(xiàn)的全過(guò)程記錄
這篇文章主要給大家介紹了關(guān)于在Web項(xiàng)目中實(shí)現(xiàn)短信驗(yàn)證碼的全過(guò)程記錄,文中通過(guò)示例代碼介紹的非常詳細(xì),在文末跟大家提供了源碼下載,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12MyBatis 延遲加載、一級(jí)緩存、二級(jí)緩存(詳解)
下面小編就為大家?guī)?lái)一篇MyBatis 延遲加載、一級(jí)緩存、二級(jí)緩存(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08Java實(shí)現(xiàn)Swing組件定制Button示例
這篇文章主要介紹了Java實(shí)現(xiàn)Swing組件定制Button,涉及java Swing組件Button相關(guān)屬性設(shè)置與使用操作技巧,需要的朋友可以參考下2018-01-01idea中將單個(gè)java類導(dǎo)出為jar包文件的方法
這篇文章主要給大家介紹了關(guān)于idea中將單個(gè)java類導(dǎo)出為jar包文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09