Java中Scanner類使用保姆級教程
一、Scanner類簡介
Scanner類是在jdk1.5版本引入的,它在java的util工具包下,主要用于掃描用戶從控制臺輸入的文本。
當(dāng)我們需要通過控制臺輸入數(shù)據(jù)時,只需要事先導(dǎo)入java.util包中的Scanner類,然后調(diào)用Scanner類,我們的程序就能獲取我們在控制臺所輸入的數(shù)據(jù)了。
二、如何使用Scanner類
1、首先導(dǎo)入java.util.Scanner包;
import java.util.Scanner;
2、創(chuàng)建Scanner類對象
Scanner sc = new Scanner(System.in);
3、創(chuàng)建一個變量來接收輸入的數(shù)據(jù)
//運用上面創(chuàng)建的sc對象調(diào)用對應(yīng)的方法,控制臺即可等待用戶輸入,我們自定義一個變量來接收即可 //我們想要輸入的數(shù)據(jù)類型不同,也需要調(diào)用不同的方法,具體應(yīng)用如下: String str = sc.nextLine(); String str = sc.next(); byte a1= sc.nextByte(); short a2= sc.nextShort(); int a3 = sc.nextInt(); long a4 = sc.nextLong(); float a5 = sc.nextFloat(); double a6 = sc.nextDouble(); boolean a7 = sc.nextBoolean();
4、關(guān)閉Scanner類
//使用完Scanner后,我們一定要記得將它關(guān)閉! //因為使用Scanner本質(zhì)上是打開了一個IO流,如果不關(guān)閉的話,它將會一直占用系統(tǒng)資源。 sc.close(); //但是注意一旦你關(guān)閉后,就算在sc.close()這行代碼后你再重新new Scanner(System.in),那也不能重新再打開一個掃描器了,如下圖會發(fā)現(xiàn)程序會報錯 //所以大家一定要在用不到掃描器之后再關(guān)閉,即把sc.close()代碼放到最后。
三、next()和nextLine()的區(qū)別(很重要)
從上面的講解,我們會發(fā)現(xiàn)當(dāng)我們想要輸入的數(shù)據(jù)類型是String時,我們有兩個方法可以調(diào)用:next()和nextLine()。那這兩種方法具體有什么區(qū)別呢?我們繼續(xù)往下看:
(1)我們先來測試一下next():
使用多組測試用例測試后,分析輸出結(jié)果不難得出以下結(jié)論(這里只貼了經(jīng)典測試案例,其他的大家可以自行測試):
next()方法在識別輸入的字符串時,不能得到我們輸入的帶有空格的字符串,只是讀取到了hello。
這說明next()在讀取到有效字符之后會以空格作為自己的讀取結(jié)束標(biāo)識符,因為我們可以發(fā)現(xiàn)hello前面的空格并沒有影響到方法的讀取。所以next()用法總結(jié)如下:
next()用法總結(jié):
1. 一定要讀取到有效字符后才可以結(jié)束輸入。
2. 對輸入的有效字符之前所遇到的空白,會自動將其去除。
3. 只有輸入的有效字符后才將其后面輸入的空白作為結(jié)束符。
4. next()不能得到帶有空格的字符串。
5. 讀取結(jié)束后,該方法會將我們的鼠標(biāo)定位在我們輸入數(shù)據(jù)的那一行。
(2)再來測試一下nextLine():
分析結(jié)果發(fā)現(xiàn),輸入結(jié)果與輸入結(jié)果完全一致,nextLine()并沒有被字符串中間的空格影響讀取結(jié)果。
這是因為該方法以的是回車符(也就是我們鍵盤的enter鍵)作為結(jié)束標(biāo)識符。
nextLine()用法總結(jié):
1、以回車符作為結(jié)束標(biāo)識符,獲取到的是回車符前輸入的所有字符串(包括空格)。
2、讀取結(jié)束后,該方法會將我們的鼠標(biāo)定位在我們輸入數(shù)據(jù)的那一行的下一行。
(3)先使用nextLine再使用next()、nextInt()等沒問題,但是先使用next()和nextInt()等之后就不可以再緊跟nextLine使用。(這一點很重要?。。。?/h3>
這是因為next()等這些方法讀取結(jié)束后會緊跟一個回車符,而nextLine會直接讀取到這個回車符,這就導(dǎo)致出現(xiàn)我們還沒有來得及輸入我們想要輸入的數(shù)據(jù),nextLine就以為我們已經(jīng)輸入完了這樣的情況!
解決辦法也很簡單:我們直接在next()使用后加兩個nextLine()就OK了,這樣第一個nextLine()就會當(dāng)一個‘替死鬼’,第二個nextLine()我們就可以輸入自己想要輸入的數(shù)據(jù)啦!
四、hash×××()的簡單使用
我們發(fā)現(xiàn)Scanner類的實例變量還會有以hash開頭的一系列方法,那這些方法是干什么的呢?
我們直接上測試用例,大家直觀體會:
五、Scanner方法匯總
該圖的意思其實就是,比如:nextlnt():只能讀取int值,用戶如果輸入了其他非整型的數(shù)據(jù),程序就會報錯。
其他的如nextByte()、nextDouble()也是以此類推,只能讀取符合該類型的數(shù)據(jù),所以我們要根據(jù)我們輸入的數(shù)據(jù)來匹配對應(yīng)的方法。
總結(jié)
到此這篇關(guān)于Java中Scanner類使用保姆級教程的文章就介紹到這了,更多相關(guān)Java Scanner類使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring MVC實現(xiàn)文件上傳及優(yōu)化案例解析
本文介紹如何在SpringMVC框架中實現(xiàn)文件上傳和異步登錄功能,通過添加必要的依賴和配置,創(chuàng)建文件上傳頁面和控制器,實現(xiàn)文件上傳到指定文件夾,同時,展示了如何使用AJAX實現(xiàn)局部刷新的異步登錄,優(yōu)化用戶體驗,詳細步驟包括配置springmvc.xml、編寫前端頁面和控制器等2024-10-10Java?Spring?boot?配置JDK和MAVEN開發(fā)環(huán)境的過程
本文詳細介紹了如何配置JDK和Maven環(huán)境,包括JDK的安裝與環(huán)境變量設(shè)置,Maven的下載、配置環(huán)境變量和設(shè)置阿里云倉庫,最后簡述了在IntelliJ?IDEA中配置JDK和Maven的步驟,本教程適合Java開發(fā)新手進行開發(fā)環(huán)境的搭建,確保順利進行Java項目的開發(fā)2024-11-11LocalDateTime日期時間格式中間多了一個T的問題及解決
這篇文章主要介紹了LocalDateTime日期時間格式中間多了一個T的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03