java中hasNextInt判斷后無(wú)限循環(huán)輸出else項(xiàng)的解決方法
話不多說(shuō),上來(lái)就是干!
?12345678910111213141516171819202122232425262728293031323334353637 import java.util.Scanner; public class Test_hasNextInt { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); //關(guān)于hasNextInt判斷后無(wú)限循環(huán)輸出else項(xiàng)的解決辦法 String next; int i; while(true) {// Scanner sc = new Scanner(System.in); //第一種處理方法,把掃描器拿到里面來(lái),每次循環(huán)都創(chuàng)建一個(gè)新的掃描器.else語(yǔ)句里直接提示輸入錯(cuò)誤就好了 System.out.println("請(qǐng)輸入一個(gè)整數(shù)"); if (sc.hasNextInt()) { //如果通過(guò)使用 nextInt() 方法,此掃描器輸入信息中的下一個(gè)標(biāo)記可以解釋為默認(rèn)基數(shù)中的一個(gè) int 值,則返回 true。 i = sc.nextInt(); //如果是輸入 22 33 會(huì)做兩次輸出 System.out.println(i); } else {// next = sc.next(); //第二種處理方法,把scanner緩存里的非int值接收掉// System.out.println("您輸入的是:" + next + ",請(qǐng)重新輸入"); //注意:next() 查找并返回來(lái)自此掃描器的下一個(gè)完整標(biāo)記 例如輸入: aa bb cc 那么這里會(huì)先接收aa ,然后輸出aa //然后再while()循環(huán),遇到if判斷緩存里的bb 確定不是整數(shù)后繼續(xù)走else語(yǔ)句輸出bb.同理輸出完cc才會(huì)停止 //如果輸入的是 aa 22 cc,那么先走else輸出aa, 再判斷出是22是整數(shù)走if語(yǔ)句,走完再次走cc才能結(jié)束 String nextLine = sc.nextLine(); //第三種處理方法,算了 還是接收一行吧! System.out.println(nextLine); //如果輸入 22 aaa 333 ccc 第一次會(huì)走if把22接收掉, //然后遇到aaa后走esls會(huì)把后面的整行都接收掉 //當(dāng)然,正常情況下沒(méi)有sc.hasNextInt()這一個(gè)判斷的時(shí)候, //nextLine()會(huì)把整行都接收掉,而這里是因?yàn)楸簧厦娴膎extInt()拿走了一個(gè)22 //所以還是看需要把.第一種雖然每次輸入都會(huì)創(chuàng)建一次Scanner對(duì)象,但是也算是一種合理的解決辦法! //總結(jié):理解緩存,就會(huì)明白了! } } } }
以上所述是小編給大家介紹的java中hasNextInt判斷后無(wú)限循環(huán)輸出else項(xiàng)的解決方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
SpringMVC實(shí)戰(zhàn)案例RESTFul實(shí)現(xiàn)添加功能
這篇文章主要為大家介紹了SpringMVC實(shí)戰(zhàn)案例RESTFul實(shí)現(xiàn)添加功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05SpringBoot MongoDB 索引沖突分析及解決方法
這篇文章主要介紹了SpringBoot MongoDB 索引沖突分析及解決方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11java 中newInstance()方法和new關(guān)鍵字的區(qū)別
這篇文章主要介紹了java 中newInstance()方法和new關(guān)鍵字的區(qū)別的相關(guān)資料,希望通過(guò)本文大家能掌握他們之家的區(qū)別與用法,需要的朋友可以參考下2017-09-09Java小項(xiàng)目之迷宮游戲的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Java小項(xiàng)目之迷宮的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Java 下數(shù)據(jù)業(yè)務(wù)邏輯開發(fā)技術(shù) JOOQ 和 SPL
這篇文章主要為大家介紹了Java 下數(shù)據(jù)業(yè)務(wù)邏輯開發(fā)技術(shù) JOOQ 和 SPL詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Java使用Calendar類實(shí)現(xiàn)動(dòng)態(tài)日歷
這篇文章主要為大家詳細(xì)介紹了Java使用Calendar類實(shí)現(xiàn)動(dòng)態(tài)日歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07玩轉(zhuǎn)SpringBoot中的那些連接池(小結(jié))
這篇文章主要介紹了玩轉(zhuǎn)SpringBoot中的那些連接池(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12