Java中Scanner用法總結(nextlnt,next,nextLine的用法)

Scanner類簡介

java添加了java.util.Scanner類,這是一個用于掃描輸入文本的新的實用程序。它是以前的StringTokenizer和Matcher類之間的某種結合。由于任何數據都必須通過同一模式的捕獲組檢索或通過使用一個索引來檢索文本的各個部分。于是可以結合使用正則表達式和從輸入流中檢索特定類型數據項的方法。這樣,除了能使用正則表達式之外,Scanner類還可以任意地對字符串和基本類型(如int和double)的數據進行分析。借助于Scanner,可以針對任何要處理的文本內容編寫自定義的語法分析器。

關于nextInt()、next()和nextLine()的理解

nextInt():只讀取數值,剩下”\n”還沒有讀取,并將cursor放在本行中。

next():只讀空格之前的數據,并且cursor指向本行。

next() 方法遇見第一個有效字符(非空格,非換行符)時,開始掃描,當遇見第一個分隔符或結束符(空格或換行符)時,結束掃描,獲取掃描到的內容,即獲得第一個掃描到的不含空格、換行符的單個字符串。

nextLine():可以掃描到一行內容并作為一個字符串而被獲取到。

public class NextTest {

? ? public static void main(String[] args)? {

? ? ? ? ? String s1,s2;

? ? ? ? Scanner sc=new Scanner(System.in);

? ? ? ? System.out.print("請輸入第一個字符串:");

? ? ? ? s1=sc.nextLine();

? ? ? ? System.out.print("請輸入第二個字符串:");

? ? ? ? s2=sc.next();

? ? ? ? System.out.println("輸入的字符串是:"+s1+" "+s2);

? ? ? }

}

結果:

請輸入第一個字符串:hello

請輸入第二個字符串:world

輸入的字符串是:hello world

把上面的程序修改一下:

s1=sc.next();? s2=sc.nextLine();

運行結果:

請輸入第一個字符串:hello

請輸入第二個字符串:輸入的字符串是:hello

可以看到,nextLine()自動讀取了被next()去掉的Enter作為他的結束符,所以沒辦法給s2從鍵盤輸入值。經過驗證,我發現其他的next的方法,如double nextDouble() , float nextFloat() , int nextInt() 等與nextLine()連用時都存在這個問題,解決的辦法是:在每一個 next()、nextDouble() 、 nextFloat()、nextInt() 等語句之后加一個nextLine()語句,將被next()去掉的Enter結束符過濾掉

public class NextTest {

? ? public static void main (String[] args) {

? ? ? ? String s1,s2;

? ? ? ? Scanner sc=new Scanner(System.in);

? ? ? ? System.out.print("請輸入第一個字符串:");

? ? ? ? s1=sc.next();

? ? ? ? sc.nextLine();

? ? ? ? System.out.print("請輸入第二個字符串:");

? ? ? ? s2=sc.nextLine();

? ? ? ? System.out.println("輸入的字符串是:"+s1+" "+s2);

? ? ? }

? }

運行結果:

請輸入第一個字符串:home

請輸入第二個字符串:work

輸入的字符串是:home work

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔...
    葉總韓閱讀 5,162評論 0 41
  • Java經典問題算法大全 /*【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子...
    趙宇_阿特奇閱讀 1,904評論 0 2
  • next()一定要讀取到有效字符后才可以結束輸入,對輸入有效字符之前遇到的空格鍵、Tab鍵或Enter鍵等結束符,...
    李響同學閱讀 13,124評論 0 8
  • 概述 java.io 包幾乎包含了所有操作輸入、輸出需要的類。所有這些流類代表了輸入源和輸出目標。java.io ...
    Steven1997閱讀 9,232評論 1 25
  • 許是太久沒有提筆,一時竟不知從何寫起。世事紛繁,許多事,又偏不是你想躲,便能躲得,實在沒得法子想了,只能硬著頭皮去...
    塵間小妖閱讀 343評論 0 0