最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中hasNextInt()的使用場(chǎng)景和注意事項(xiàng)

 更新時(shí)間:2026年05月13日 08:28:06   作者:rx123000  
hasNextInt()方法是判斷控制臺(tái)接收是否為整型數(shù)字,而不是接收數(shù)據(jù),這篇文章主要介紹了Java中hasNextInt()的使用場(chǎng)景和注意事項(xiàng)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、hasNextInt()介紹

hasNextInt() 是 Java 中 Scanner 類的一個(gè)方法,用于檢查輸入流中是否存在下一個(gè)可解析為整數(shù)的“標(biāo)記/段落”。僅檢查輸入流狀態(tài),不會(huì)消耗輸入。

所屬類:java.util.Scanner(需要導(dǎo)入該類)

返回值:boolean 類型(true 表示存在整數(shù)標(biāo)記,false 表示不存在)

import java.util.Scanner;
public class InputTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入整數(shù):");
        while (sc.hasNextInt()) {  //檢查下一個(gè)“段落”是否為整數(shù),是則返回ture,只檢測(cè)不消耗
            int num = sc.nextInt();  //讀取并消耗該整數(shù)
            System.out.println("輸入的整數(shù)是:" + num);
        }
        
        System.out.println("非整數(shù)輸入,程序退出。");
        sc.close();
    }
}

二、工作原理

需要注意的是hasNextInt()只檢測(cè)下一個(gè)“段落”,默認(rèn)以空白字符(空格、回車、制表符等)作為分隔符,將輸入流拆分為多個(gè)“段落”。

例如輸入多個(gè)回車符,此時(shí)只有分隔符沒(méi)有產(chǎn)生“段落”,hasNextInt()仍會(huì)等待輸入。

輸入“回車回車123  abc  回車”(中間有空格),hasNextInt()檢測(cè)到下一個(gè)段落內(nèi)容為“123”,返回true。并且輸入的“回車回車123  abc  回車”仍留著輸入緩沖區(qū)中,所以要留意接下來(lái)緩沖區(qū)內(nèi)的處理方法。

三、使用場(chǎng)景

1、學(xué)生管理系統(tǒng)中需要錄入學(xué)生的年齡,若直接用nextInt()接收收入,非法的輸入內(nèi)容(非整數(shù)輸入)會(huì)讓程序異常終止。為了程序的健壯性,使用hasNextInt()+nextInt()配合,避免因輸入非整數(shù)而導(dǎo)致程序崩潰。

Scanner sc = new Scanner(System.in);
Student st = new Student();
System.out.println("請(qǐng)輸入學(xué)生年齡:");
while (!sc.hasNextInt()) {  //判斷下一個(gè)段落是否為整數(shù)
    System.out.println("請(qǐng)輸入整數(shù)!");
    sc.next();  //消耗這個(gè)非整數(shù)段落
}
st.setAge(sc.nextInt());

2、菜單選項(xiàng)要求輸入1-5之間的整數(shù)

//處理用戶輸入:確保輸入為1-5之間的整數(shù)
while (true) {
    if (!sc.hasNextInt()) {
        System.out.println("輸入錯(cuò)誤,請(qǐng)輸入數(shù)字!");
        sc.next(); //清空非整數(shù)輸入
    } else {
        num = sc.nextInt();
        if (num >= 1 && num <= 5) {
            break; //輸入正確,跳出循環(huán)
        } else {
            System.out.println("輸入錯(cuò)誤,請(qǐng)輸入1-5之間的數(shù)字!");
        }
    }
}

四、注意事項(xiàng)

1、hasNextInt()最好與nextInt()配合使用,并注意處理輸入緩沖區(qū)內(nèi)的殘留

例如輸入“回車回車123  abc  回車”(中間有空格),hasNextInt()會(huì)返回true,接下來(lái)若用nextLine()接收僅會(huì)消耗一個(gè)回車符,仍會(huì)剩余“回車123  abc  回車”。

用nextInt()接收,會(huì)消耗123及之前的回車符,在正確接收123整數(shù)后,要注意及時(shí)清理緩沖區(qū)內(nèi)剩余“  abc  回車”,避免影響后面的程序運(yùn)行。

2、hasNextInt()無(wú)法回車符對(duì)出響應(yīng)

場(chǎng)景例如,學(xué)生管理系統(tǒng)中需要修改某個(gè)已存在的學(xué)生的信息,功能需求為提示修改當(dāng)前學(xué)生年齡后,用戶可以輸入新年齡、也可以按回車跳過(guò)保持原來(lái)年齡,同時(shí)對(duì)非整數(shù)輸入做出響應(yīng)。

由于hasNextInt()、nextInt()、next()均會(huì)跳過(guò)前導(dǎo)空白(空格、回車、制表符等分隔符),直接取用自己所需要的“段落”,其中nextInt()、next()會(huì)消耗下一個(gè)段落及段落前的分隔符。

所以使用hasNextInt()過(guò)濾非整數(shù)輸入時(shí),也過(guò)濾了回車輸入,無(wú)法對(duì)回車符等輸入單獨(dú)做出響應(yīng)。

需要用nextLine()對(duì)回車符對(duì)出響應(yīng),并使用isEmpty()和Integer.parseInt()等對(duì)錄入的字符串再做判斷和處理。

System.out.println("當(dāng)前年齡:" + st.getAge());
while (true) {
    System.out.println("請(qǐng)修改學(xué)生年齡(若不修改按回車跳過(guò)):");
    String age = sc.nextLine();
    if (age.isEmpty()) {
        break;  //回車跳過(guò)
    } else if (stringToInt(age) >= 0) {  //自定義了個(gè)stringToInt方法用于字符串轉(zhuǎn)數(shù)字,并判斷非整數(shù)返回-1。
       st.setAge(stringToInt(age));
       break;
   } else {
        System.out.println("輸入錯(cuò)誤,請(qǐng)輸入整數(shù)!");
    }
}

五、替代hasNextInt()的其他方法

1、使用try-catch

try-catch 是 Java 中用于異常處理的核心語(yǔ)法結(jié)構(gòu),其主要作用是捕獲并處理程序運(yùn)行時(shí)可能出現(xiàn)的異常,防止程序因未處理的異常而直接崩潰,同時(shí)允許程序在遇到異常后繼續(xù)執(zhí)行后續(xù)邏輯。

sc.nextInt() 嘗試讀取整數(shù)時(shí),發(fā)現(xiàn)輸入是字符串,拋出 InputMismatchException 異常。

try {
    System.out.print("請(qǐng)輸入一個(gè)整數(shù):");
    int num = sc.nextInt();  //可能拋出 InputMismatchException 的代碼
    System.out.println("您輸入的整數(shù)是:" + num);
} catch (InputMismatchException e) {
    System.out.println("輸入錯(cuò)誤,請(qǐng)輸入整數(shù)!");  //處理異常的邏輯
    sc.next();  //清空緩沖區(qū),避免無(wú)限循環(huán)
}

總結(jié) 

到此這篇關(guān)于Java中hasNextInt()的使用場(chǎng)景和注意事項(xiàng)的文章就介紹到這了,更多相關(guān)Java中hasNextInt()使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java多線程加鎖以及Condition類的使用實(shí)例解析

    java多線程加鎖以及Condition類的使用實(shí)例解析

    這篇文章主要介紹了java多線程加鎖以及Condition類的使用實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • spring boot配置druid連接池的完整步驟

    spring boot配置druid連接池的完整步驟

    這篇文章主要給大家介紹了關(guān)于spring boot配置druid連接池的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Spring?Boot?中starter的原理詳析

    Spring?Boot?中starter的原理詳析

    這篇文章主要介紹了Spring?Boot?中starter原理詳析,文章圍繞主題展開(kāi)springboot的插件機(jī)制和starter原理相關(guān)資料,需要的小伙伴可以參考一下
    2022-06-06
  • junit4教程junit4.5官方下載

    junit4教程junit4.5官方下載

    前提:本文假設(shè)讀者已經(jīng)具有使用JUnit 4以前版本的經(jīng)驗(yàn)。
    2008-09-09
  • springboot、Mybatis-plus工程多數(shù)據(jù)源字段映射不生效問(wèn)題及解決

    springboot、Mybatis-plus工程多數(shù)據(jù)源字段映射不生效問(wèn)題及解決

    在Spring Boot多數(shù)據(jù)源項(xiàng)目中,使用MyBatis-Plus時(shí)發(fā)現(xiàn)字段映射不生效,通過(guò)在application配置文件和Java配置類中添加駝峰命名轉(zhuǎn)換配置,解決了問(wèn)題
    2026-01-01
  • java Thumbnails 圖片處理的使用

    java Thumbnails 圖片處理的使用

    這篇文章主要介紹了java Thumbnails 圖片處理的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java Swing GridBagLayout網(wǎng)格袋布局的實(shí)現(xiàn)

    Java Swing GridBagLayout網(wǎng)格袋布局的實(shí)現(xiàn)

    這篇文章主要介紹了Java Swing GridBagLayout網(wǎng)格袋布局的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • java連接orcale數(shù)據(jù)庫(kù)示例分享

    java連接orcale數(shù)據(jù)庫(kù)示例分享

    這篇文章主要介紹了java連接orcale數(shù)據(jù)庫(kù)示例,需要的朋友可以參考下
    2014-02-02
  • Spring @ComponentScan注解掃描組件原理

    Spring @ComponentScan注解掃描組件原理

    這篇文章主要介紹了Spring @ComponentScan自動(dòng)掃描組件使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • java鏈表數(shù)據(jù)結(jié)構(gòu)LinkedList插入刪除元素時(shí)間復(fù)雜度面試精講

    java鏈表數(shù)據(jù)結(jié)構(gòu)LinkedList插入刪除元素時(shí)間復(fù)雜度面試精講

    這篇文章主要為大家介紹了java LinkedList插入和刪除元素的時(shí)間復(fù)雜度面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10

最新評(píng)論

五莲县| 广南县| 泗水县| 凭祥市| 昭通市| 高州市| 遂昌县| 全州县| 神木县| 香港| 南通市| 旬邑县| 乌鲁木齐县| 奇台县| 乌兰浩特市| 日喀则市| 明溪县| 金寨县| 宿州市| 延吉市| 墨玉县| 郑州市| 三门峡市| 仪陇县| 莒南县| 大丰市| 灵石县| 射洪县| 合肥市| 甘泉县| 北流市| 高阳县| 洛宁县| 紫云| 靖江市| 周至县| 九江市| 富顺县| 辽中县| 陆河县| 乐至县|