java中hasNextInt判斷后無(wú)限循環(huán)輸出else項(xiàng)的解決方法
話(huà)不多說(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)文章
Spring中的@ExceptionHandler異常攔截器
這篇文章主要介紹了Spring中的@ExceptionHandler異常攔截器,Spring的@ExceptionHandler可以用來(lái)統(tǒng)一處理方法拋出的異常,給方法加上@ExceptionHandler注解,這個(gè)方法就會(huì)處理類(lèi)中其他方法拋出的異常,需要的朋友可以參考下2024-01-01
淺談Maven鏡像更換為阿里云中央倉(cāng)庫(kù)(精)
本篇文章主要介紹了Maven鏡像更換為阿里云中央倉(cāng)庫(kù)(精),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
SpringData JPA基本/高級(jí)/多數(shù)據(jù)源的使用詳解
這篇文章主要介紹了SpringData JPA基本/高級(jí)/多數(shù)據(jù)源的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
springboot接口接收數(shù)組及多個(gè)參數(shù)的問(wèn)題及解決
這篇文章主要介紹了springboot接口接收數(shù)組及多個(gè)參數(shù)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
Mybatis注解開(kāi)發(fā)@Select執(zhí)行參數(shù)和執(zhí)行sql語(yǔ)句的方式(最新詳解)
@Select 是 Mybatis 框架中的一個(gè)注解,用于執(zhí)行 SQL 查詢(xún)語(yǔ)句,并把查詢(xún)結(jié)果映射到指定的 Java 對(duì)象中,這篇文章主要介紹了Mybatis注解開(kāi)發(fā)@Select執(zhí)行參數(shù)和執(zhí)行sql語(yǔ)句的方式,需要的朋友可以參考下2023-07-07
SpringBoot實(shí)現(xiàn)垂直分片的六種策略
隨著業(yè)務(wù)規(guī)模的不斷擴(kuò)大,單一數(shù)據(jù)庫(kù)架構(gòu)往往難以滿(mǎn)足日益增長(zhǎng)的數(shù)據(jù)量和訪(fǎng)問(wèn)壓力,作為解決方案之一,垂直分片通過(guò)將不同業(yè)務(wù)模塊的數(shù)據(jù)分散到不同的數(shù)據(jù)庫(kù)或?qū)嵗?本文將介紹在SpringBoot環(huán)境下實(shí)現(xiàn)垂直分片的六種策略,需要的朋友可以參考下2025-06-06
swagger?@ApiModel添加實(shí)體類(lèi)不生效的解決
這篇文章主要介紹了swagger?@ApiModel添加實(shí)體類(lèi)不生效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。2022-01-01

