詳解Java中方法next()和nextLine()的區(qū)別與易錯點(diǎn)
1、基本語法
1.1基本使用方法
本篇博客重點(diǎn)nextLine()會讀取換行('\r'),但是不會進(jìn)行輸出。
Java中Scanner類中的方法next()和nextLine()都是吸取輸入臺輸入的字符,區(qū)別:
- next()不會吸取字符前/后的空格/Tab鍵,只吸取字符,開始吸取字符(字符前后不算)直到遇到空格/Tab鍵/回車截止吸?。?/strong>
- nextLine()吸取字符前后的空格/Tab鍵,回車鍵截止。
輸入兩行字符串:
我愛學(xué)JAVA 我真的很愛愛學(xué)JAVA
我真的很愛很愛學(xué)JAVA
期望輸出結(jié)果:
我愛學(xué)JAVA 我真的很愛愛學(xué)JAVA
我真的很愛很愛學(xué)JAVA
package scanner; import java.util.Scanner; public class Sun_01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str1 = scanner.nextLine(); String str=scanner.next(); System.out.println(str1); System.out.println(str); scanner.close(); } }
沒錯,和我們期望輸出結(jié)果一樣。
2、nextLine()易錯點(diǎn)
2.1 nextLine()使用錯誤案例
我們第一行使用next()進(jìn)行讀入,第二行使用nextLine()進(jìn)行讀入兩行字符串
輸入兩行字符串:
我愛學(xué)JAVA
我愛學(xué)JAVA 我真的很愛愛學(xué)JAVA
期望輸出結(jié)果:
我愛學(xué)JAVA
我愛學(xué)JAVA 我真的很愛愛學(xué)JAVA
package scanner; import java.util.Scanner; public class Sun_01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.next(); String str2=scanner.nextLine(); System.out.println(str); System.out.println(str2); scanner.close(); } }
會發(fā)現(xiàn),輸入臺輸入“我愛學(xué)JAVA"后接著輸出了,與我們期望輸出結(jié)果不一樣。
到底是因?yàn)槭裁茨兀?/strong>
Scanner是一個掃描器,我們錄取到鍵盤的數(shù)據(jù),先存到緩存區(qū)等待讀取,它判斷讀取結(jié)束的標(biāo)示是 空白符;比如空格,回車,tab 等等。
next()方法讀取到空白符就結(jié)束,也就是讀取完“我愛學(xué)JAVA”;
nextLine()只讀取到回車結(jié)束也就是“\r”;
通俗解釋為:因?yàn)閚ext()讀取到空白符前的數(shù)據(jù)時結(jié)束了,然后把回車“\r”留給了nextLine();所以上面nextLine()沒有輸出,不輸出不代表沒數(shù)據(jù),是接到了空(回車“/r”)的數(shù)據(jù)。
正確的解決方式:
package scanner; import java.util.Scanner; public class Sun_01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.next(); String str1=scanner.nextLine(); String str2=scanner.nextLine(); System.out.println(str); System.out.println(str2); scanner.close(); } }
解決方式為多用一個nextLine()將換行讀入。
到此這篇關(guān)于詳解Java中方法next()和nextLine()的區(qū)別與易錯點(diǎn)的文章就介紹到這了,更多相關(guān)Java next()和nextLine()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java導(dǎo)出excel時合并同一列中相同內(nèi)容的行思路詳解
這篇文章主要介紹了Java導(dǎo)出excel時合并同一列中相同內(nèi)容的行,需要的朋友可以參考下2018-06-06SpringBoot中整合MyBatis-Plus-Join使用聯(lián)表查詢的實(shí)現(xiàn)
本文主要介紹了SpringBoot中整合MyBatis-Plus-Join使用聯(lián)表查詢的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03spring cloud中微服務(wù)之間的調(diào)用以及eureka的自我保護(hù)機(jī)制詳解
這篇文章主要介紹了spring cloud中微服務(wù)之間的調(diào)用以及eureka的自我保護(hù)機(jī)制詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07Spring Boot 2結(jié)合Spring security + JWT實(shí)現(xiàn)微信小程序登錄
這篇文章主要介紹了Spring Boot 2結(jié)合Spring security + JWT實(shí)現(xiàn)微信小程序登錄,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01玩轉(zhuǎn)spring boot 結(jié)合jQuery和AngularJs(3)
玩轉(zhuǎn)spring boot,這篇文章主要介紹了結(jié)合jQuery和AngularJs,玩轉(zhuǎn)spring boot,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01詳解Java8新特性之interface中的static方法和default方法
這篇文章主要介紹了Java8新特性之interface中的static方法和default方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08Java方法遞歸的形式和常見遞歸算法(方法遞歸結(jié)合File類查找文件)
方法遞歸方法直接調(diào)用自己或者間接調(diào)用自己的形式稱為方法遞歸( recursion),遞歸做為一種算法在程序設(shè)計語言中廣泛應(yīng)用,這篇文章主要介紹了Java方法遞歸的形式和常見遞歸算法-方法遞歸結(jié)合File類查找文件,需要的朋友可以參考下2023-02-02