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

Java Scanner對(duì)象中hasNext()與next()方法的使用

 更新時(shí)間:2021年10月30日 10:40:41   作者:wonder4work  
這篇文章主要介紹了Java Scanner對(duì)象中hasNext()與next()方法的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Scanner對(duì)象中hasNext()與next()方法

相信很多像我一樣在剛剛接觸Java的時(shí)候都有遇到這樣的問(wèn)題:

我們可能希望的是:先輸出“請(qǐng)輸入:”然后我們就可以在控制臺(tái)輸入一個(gè)字符串或數(shù)字。

但是,事實(shí)卻是:控制臺(tái)要我們先輸入,輸入后才顯示“請(qǐng)輸入:”。

這是怎么回事?

原因:

首先,sc.hasNext()和sc.next()都可以用來(lái)輸入

我們,可以發(fā)現(xiàn),hasNext()返回的是boolean類型而next()返回的是你輸入的那個(gè)值,

sc.hasNext()可以理解為把我們輸入的值存到了sc當(dāng)中而sc.next()可以理解為從sc中取值,取值后將標(biāo)識(shí)符后移(可以理解為:取完值后這個(gè)值就不在了),如果sc中沒(méi)有值了,它也會(huì)要求輸入一個(gè)值(前面說(shuō)了它們兩都可以輸入)。

然后我們?cè)賮?lái)分析一下開(kāi)始的那段程序:

首先,進(jìn)入while循環(huán),sc.hasNext()就要求我們給他輸入一個(gè)值,所以就不會(huì)輸出“請(qǐng)輸入:”,當(dāng)我們輸完后,String str = sc.next()中,會(huì)從sc中取出我們輸入的那個(gè)值返回到str中,如果沒(méi)有值,它就會(huì)被阻塞要求我們給它一個(gè)值。

輸入hasNext()和hasNextLine()方法的區(qū)別

最近在學(xué)習(xí)在牛客網(wǎng)上面做一些算法練習(xí)題.

發(fā)現(xiàn)在一些情況下寫(xiě)好的Java代碼在本機(jī)運(yùn)行時(shí)正常的結(jié)果,

但是就是無(wú)法通過(guò)??途W(wǎng)的測(cè)試用例。

經(jīng)過(guò)檢查,最終定位到讀取測(cè)試用例的位置上,發(fā)現(xiàn):

Scanner scanner = new Scanner(System.in);
// 當(dāng)使用 hasNextLine 方法實(shí)現(xiàn)判斷是否還有數(shù)據(jù)時(shí)
// 會(huì)報(bào)錯(cuò)
while(scanner.hasNextLine()){
 // TODO:implement code
}
// 當(dāng)將 hasNextLine 修改為 hasNext() 方法時(shí)
// 程序恢復(fù)正常
while(scanner.hasNext()){
 // TODO:implement code
}

通過(guò)在網(wǎng)上搜索,獲取到這兩種方法的區(qū)別:

在檢查輸入流時(shí):

  • hasNext()方法會(huì)判斷接下來(lái)是否有非空字符.如果有,則返回true,否則返回false
  • hasNextLine() 方法會(huì)根據(jù)行匹配模式去判斷接下來(lái)是否有一行(包括空行),如果有,則返回true,否則返回false

比如當(dāng)前我們有如下測(cè)試用例:

7 15 9 5

這個(gè)測(cè)試用例在??途W(wǎng)上是以文件的形式進(jìn)行存儲(chǔ)的.

而在 linux 系統(tǒng)中文件的結(jié)尾會(huì)有一個(gè)換行符\n,也就是說(shuō)從System.in輸入流中真正讀取到的數(shù)據(jù)流是這樣的:

7 15 9 5\n

程序在處理完5之后,輸入流中就只剩下一個(gè)換行符\n了,在處理完5之后while再去進(jìn)行循環(huán)判斷,此時(shí)hasNext()方法和hasNextLine()方法去判斷得到的結(jié)果就產(chǎn)生了差異.

  • hasNext()方法會(huì)認(rèn)為之后再?zèng)]有非空字符,會(huì)返回一個(gè)false
  • hasNextLine() 方法會(huì)認(rèn)為換行符\n是一個(gè)空行,符合行的匹配模式,則會(huì)返回一個(gè)true,但實(shí)際上由于之后再?zèng)]有數(shù)據(jù)了,所以會(huì)在讀取輸入流的時(shí)候發(fā)生異常,從而導(dǎo)致整個(gè)運(yùn)行報(bào)錯(cuò).

建議方案

采用hasNextXxxx() 的話,后面也要用nextXxxx():

比如前面用hasNextLine(),那么后面要用 nextLine() 來(lái)處理輸入;

后面用 nextInt() 方法的話,那么前面要使用 hasNext()方法去判斷.

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot中的多個(gè)application文件講解

    springboot中的多個(gè)application文件講解

    這篇文章主要介紹了springboot中的多個(gè)application文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 詳解Java ArrayList類

    詳解Java ArrayList類

    這篇文章主要介紹了Java ArrayList類的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • spring scheduled單線程和多線程使用過(guò)程中的大坑

    spring scheduled單線程和多線程使用過(guò)程中的大坑

    本文主要介紹了spring scheduled單線程和多線程使用過(guò)程中的大坑,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Spring框架構(gòu)造注入type屬性實(shí)例詳解

    Spring框架構(gòu)造注入type屬性實(shí)例詳解

    這篇文章主要介紹了Spring框架構(gòu)造注入type屬性實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • WeakHashMap的使用方法詳解

    WeakHashMap的使用方法詳解

    這篇文章主要介紹了WeakHashMap的使用方法詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • 利用Log4j將不同Package的日志輸出到不同文件的方法

    利用Log4j將不同Package的日志輸出到不同文件的方法

    日志是應(yīng)用軟件中不可缺少的部分,Apache的開(kāi)源項(xiàng)目log4j是一個(gè)功能強(qiáng)大的日志組件,提供方便的日志記錄。這篇文章主要介紹了利用Log4j將不同Package的日志輸出到不同文件的方法,需要的朋友可以參考借鑒,下面來(lái)跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • Mybatis從3.4.0版本到3.5.7版本的迭代方法實(shí)現(xiàn)

    Mybatis從3.4.0版本到3.5.7版本的迭代方法實(shí)現(xiàn)

    本文主要介紹了Mybatis從3.4.0版本到3.5.7版本的迭代方法實(shí)現(xiàn),包括主要的功能增強(qiáng)、不兼容的更改和修復(fù)的錯(cuò)誤,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • Java中final關(guān)鍵字詳解及實(shí)例

    Java中final關(guān)鍵字詳解及實(shí)例

    這篇文章主要介紹了Java中final關(guān)鍵字詳解及實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java編程中靜態(tài)內(nèi)部類與同步類的寫(xiě)法示例

    Java編程中靜態(tài)內(nèi)部類與同步類的寫(xiě)法示例

    這篇文章主要介紹了Java編程中靜態(tài)內(nèi)部類與同步類的寫(xiě)法示例,用于構(gòu)建靜態(tài)對(duì)象以及實(shí)現(xiàn)線程同步等,需要的朋友可以參考下
    2015-09-09
  • java中創(chuàng)建兩表之間的觸發(fā)器詳解

    java中創(chuàng)建兩表之間的觸發(fā)器詳解

    這篇文章主要介紹了java中創(chuàng)建兩表之間的觸發(fā)器詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

吴桥县| 临澧县| 中宁县| 资讯 | 贺兰县| 四会市| 云南省| 枣强县| 临洮县| 洛阳市| 钟祥市| 潮安县| 东莞市| 资兴市| 桐庐县| 金山区| 米泉市| 马龙县| 那坡县| 金乡县| 嘉兴市| 酉阳| 亚东县| 苍溪县| 方城县| 曲阳县| 普兰县| 溧阳市| 洪江市| 西乡县| 濮阳市| 延吉市| 桓仁| 苍山县| 贵定县| 宁河县| 灵石县| 临安市| 林州市| 黔江区| 内黄县|