java中關(guān)于scanner類(lèi)的詳細(xì)介紹
1.Scanner的實(shí)現(xiàn)步驟
第一步:在有效代碼的第一行,通過(guò)import導(dǎo)入Scanner類(lèi)唆樊!
import java.util.Scanner;
第二步:通過(guò)new關(guān)鍵字實(shí)例化一個(gè)Scanner對(duì)象宛琅!
Scanner input = newScanner(System.in);
--> 唯一可變的就是input變量名!
第三步:通過(guò)Scanner對(duì)象來(lái)調(diào)用Scanner類(lèi)中的方法逗旁,用于獲取用戶(hù)在控制臺(tái)輸入的內(nèi)容
java相關(guān)視頻教程:java視頻
獲取基本數(shù)據(jù)類(lèi)型的數(shù)據(jù)
input.nextByte();–> 獲取用戶(hù)在控制臺(tái)輸入的內(nèi)容嘿辟,返回?cái)?shù)據(jù)類(lèi)型為byte類(lèi)型!
input.nextShort();–> 獲取用戶(hù)在控制臺(tái)輸入的內(nèi)容片效,返回?cái)?shù)據(jù)類(lèi)型為short類(lèi)型红伦!
input.nextInt();–> 獲取用戶(hù)在控制臺(tái)輸入的內(nèi)容,返回?cái)?shù)據(jù)類(lèi)型為int類(lèi)型淀衣!
input.nextLong(); --> 獲取用戶(hù)在控制臺(tái)輸入的內(nèi)容昙读,返回?cái)?shù)據(jù)類(lèi)型為long類(lèi)型!
input.nextFloat(); --> 獲取用戶(hù)在控制臺(tái)輸入的內(nèi)容膨桥,返回?cái)?shù)據(jù)類(lèi)型為float類(lèi)型蛮浑!
input.nextDouble();–> 獲取用戶(hù)在控制臺(tái)輸入的內(nèi)容唠叛,返回?cái)?shù)據(jù)類(lèi)型為double類(lèi)型!
input.nextBoolean(); --> 獲取用戶(hù)在控制臺(tái)輸入的內(nèi)容沮稚,返回?cái)?shù)據(jù)類(lèi)型為boolean類(lèi)型艺沼!
--> 當(dāng)用戶(hù)輸入內(nèi)容并敲回車(chē)時(shí),獲取第一個(gè)空格之前的內(nèi)容蕴掏!
獲取引用數(shù)據(jù)類(lèi)型的數(shù)據(jù)
input.next(); --> 獲取用戶(hù)在控制臺(tái)輸入的內(nèi)容障般,返回?cái)?shù)據(jù)類(lèi)型為String類(lèi)型!
--> 當(dāng)用戶(hù)輸入內(nèi)容并敲回車(chē)時(shí)盛杰,獲取第一個(gè)空格之前的內(nèi)容挽荡!
input.nextLine(); --> 獲取用戶(hù)在控制臺(tái)輸入的內(nèi)容,返回?cái)?shù)據(jù)類(lèi)型為String類(lèi)型即供!
--> 當(dāng)用戶(hù)輸入內(nèi)容并敲回車(chē)時(shí)定拟,獲取一整行的內(nèi)容!
2.Scanner使用的注意事項(xiàng)
a)當(dāng)執(zhí)行Scanner的方法時(shí)募狂,會(huì)阻塞代碼的執(zhí)行!當(dāng)用戶(hù)輸入數(shù)據(jù)并敲回車(chē)角雷,那么Scanner的方法會(huì)獲取用戶(hù)輸入的內(nèi)容并保存在等號(hào)左邊的變量中祸穷,然后結(jié)束代碼的阻塞效果!
b)為了提高用戶(hù)體檢勺三,在調(diào)用Scanner類(lèi)的方法之前先輸出提示性文字雷滚!提示用戶(hù)輸入的內(nèi)容!
c)輸入的內(nèi)容一定要和調(diào)用Scanner的方法返回的數(shù)據(jù)保持一致吗坚!否則就會(huì)拋出異常祈远!
d)Scanner類(lèi)中沒(méi)有提供nextChar()方法,如果需要獲取用戶(hù)輸入的字符商源,我們可以通過(guò)自定義來(lái)實(shí)現(xiàn)车份!
Scanner常遇到的一些坑
1.先通過(guò)nextInt()獲取年齡,然后再通過(guò)nextLine()獲取姓名牡彻,發(fā)現(xiàn)獲得年齡之后姓名沒(méi)有讓我們輸入程序就結(jié)束扫沼!
產(chǎn)生的原因:
執(zhí)行nextLine()方法的時(shí)候,首先會(huì)先檢查內(nèi)存中是否包含換行符庄吼,如果包含換行符缎除,那么直接獲取換行符之前的內(nèi)容而不用戶(hù)輸入,獲取完畢之后會(huì)吃掉內(nèi)存中的換行符总寻!
解決的方案:
在獲取年齡后先執(zhí)行一遍nextLine()方法器罐,然后再獲得姓名!
2.如何實(shí)現(xiàn)獲取用戶(hù)在控制臺(tái)輸入的字符渐行?轰坊?铸董?
因?yàn)椋篠canner沒(méi)有提供nextChar()方法,所以我們需要自己完成獲取字符的操作衰倦!
解決:
a)先獲得用戶(hù)輸入的字符串 --> Scanner類(lèi)的next()或nextLine()方法
b)然后再獲取字符串中的第一個(gè)字符袒炉。 --> String類(lèi)的charAt(index)方法
示例如下:
更多java相關(guān)文章教程可以訪問(wèn):java開(kāi)發(fā)入門(mén)