java.util.Scanner 是 Java5 的新特征挨措,我們可以通過 Scanner 類來獲取用戶的輸入奢人。
下面是創(chuàng)建 Scanner 對象的基本語法:
Scanner scanner=newScanner(System.in);
接下來我們演示一個(gè)最簡單的字符串輸入晾捏,并通過 Scanner 類的 next() 與 nextLine() 方法獲取輸入的字符串:
//創(chuàng)建Scanner對象Scanner scanner=newScanner(System.in);System.out.print("使用next()方法接收用戶的輸入:");String str=scanner.next();System.out.println("用戶輸入的字符串為:"+str);//關(guān)閉Scanner對象scanner.close();
輸出結(jié)果:
輸入的三個(gè)字符串神仙酌媒、妖怪厢塘、謝謝 使用空格分隔,我們發(fā)現(xiàn)只輸出了第一個(gè)詞:神仙
下面使用nextLine()方法試試:
//創(chuàng)建Scanner對象Scanner scanner=newScanner(System.in);System.out.println("使用nextLine()方法接收用戶的輸入:");String str=scanner.nextLine();System.out.println("用戶輸入的字符串為:"+str);//關(guān)閉Scanner對象scanner.close();
輸出結(jié)果變成了:
下面簡單總結(jié)下next() 與 nextLine() 區(qū)別
next():
1筒占、如果用戶只輸入一個(gè)回車,程序會(huì)等待繼續(xù)輸入蜘犁,要讀取到有效字符后才可以結(jié)束輸入翰苫;
2、next()方法會(huì)自動(dòng)去除有效字符前的空白(空白符/回車符等)
3这橙、只有輸入有效字符后才將其后面輸入的空白作為分隔符或者結(jié)束符奏窑。
next() 不能得到帶有空格的字符串。
nextLine():
1屈扎、以Enter為結(jié)束符,也就是說 nextLine()方法返回的是輸入回車之前的所有字符良哲。
2、可以獲得空白
如果要輸入 int 或 float 類型的數(shù)據(jù)助隧,在 Scanner 類中也有支持,但是在輸入之前最好先使用 hasNextXxx() 方法進(jìn)行驗(yàn)證滑沧,再使用 nextXxx() 來讀炔⒋濉:
Scanner scanner=newScanner(System.in);//接收從鍵盤輸入的數(shù)據(jù):intintNum=0;floatfloatNum=0.0f;System.out.print("接收用戶輸入的整數(shù):");if(scanner.hasNextInt()){// 判斷輸入的是否是整數(shù)intNum=scanner.nextInt();// 接收整數(shù)System.out.println("用戶輸入的整數(shù)是:"+intNum);}else{// 輸入錯(cuò)誤的信息System.out.println("輸入的不是整數(shù)!");}System.out.print("接收用戶輸入的小數(shù):");if(scanner.hasNextFloat()){// 判斷輸入的是否是小數(shù)floatNum=scanner.nextFloat();// 接收小數(shù)System.out.println("用戶輸入的小數(shù)是:"+floatNum);}else{// 輸入錯(cuò)誤的信息System.out.println("輸入的不是小數(shù)滓技!");}scanner.close();
如果配上while循環(huán)哩牍,還可以實(shí)現(xiàn)循環(huán)驗(yàn)證直到輸入正確的功能:
Scanner input=newScanner(System.in);intnum;System.out.println("請輸入一個(gè)整型數(shù)字:");while(!input.hasNextInt()){System.out.println("輸入的不是整型,請重新輸入:");//hasNextInt判斷不是整型后令漂,緩存中還是存在用戶輸入的內(nèi)容//如果再次使用hasNext..判斷膝昆,仍然會(huì)得出不是整型的結(jié)果//所以在這里單獨(dú)使用input.next(),以便將緩存清除掉input.next();}num=input.nextInt();System.out.println("輸入的整型數(shù)字是:"+num);
老九學(xué)堂出品叠必,轉(zhuǎn)載請私信哦
對于文章內(nèi)容有不理解的可以添加老九君個(gè)人QQ:614940318荚孵,請備注來自簡書
老九學(xué)堂免費(fèi)C、C++纬朝、Java課程地址:
https://study.163.com/courses-search?keyword=%E8%80%81%E4%B9%9D%E5%AD%A6%E5%A0%82