java鍵盤錄入的方法舉例詳解
一,鍵盤錄入涉及到的方法如下:
next()、nextLine()、nextInt()、nextDouble()。
1)next()、nextLine():
可以接受任意數(shù)據(jù),但是都會返回一個字符串。
比如:鍵盤錄入abc,那么會把abc看做字符串返回。
鍵盤錄入123,那么會把123看做字符串返回。
代碼示例:
Scanner sc = new Scanner(System.in); String s = sc.next();//錄入的所有數(shù)據(jù)都會看做是字符串 System.out.println(s);
代碼示例:
Scanner sc = new Scanner(System.in); String s = sc.nextLine();//錄入的所有數(shù)據(jù)都會看做是字符串 System.out.println(s);
2)nextInt():
只能接受整數(shù)。
比如:鍵盤錄入123,那么會把123當做int類型的整數(shù)返回。
鍵盤錄入小數(shù)或者其他字母,就會報錯。
代碼示例:
Scanner sc = new Scanner(System.in); int s = sc.nextInt();//只能錄入整數(shù) System.out.println(s);
3)nextDouble():
能接收整數(shù)和小數(shù),但是都會看做小數(shù)返回。
錄入字母會報錯。
代碼示例:
Scanner sc = new Scanner(System.in); double d = sc.nextDouble();//錄入的整數(shù),小數(shù)都會看做小數(shù)。 //錄入字母會報錯 System.out.println(d);
二,方法底層細節(jié) :
第一個細節(jié):
next(),nextInt(),nextDouble()在接收數(shù)據(jù)的時候,會遇到空格,回車,制表符其中一個就會停止接收數(shù)據(jù)。
代碼示例:
Scanner sc = new Scanner(System.in); double d = sc.nextDouble(); System.out.println(d); //鍵盤錄入:1.1 2.2//注意錄入的時候1.1和2.2之間加空格隔開。 //此時控制臺打印1.1 //表示nextDouble方法在接收數(shù)據(jù)的時候,遇到空格就停止了,后面的本次不接收。
Scanner sc = new Scanner(System.in); int i = sc.nextInt(); System.out.println(i); //鍵盤錄入:1 2//注意錄入的時候1和2之間加空格隔開。 //此時控制臺打印1 //表示nextInt方法在接收數(shù)據(jù)的時候,遇到空格就停止了,后面的本次不接收。
Scanner sc = new Scanner(System.in); String s = sc.next(); System.out.println(s); //鍵盤錄入:a b//注意錄入的時候a和b之間加空格隔開。 //此時控制臺打印a //表示next方法在接收數(shù)據(jù)的時候,遇到空格就停止了,后面的本次不接收。
第二個細節(jié):
next(),nextInt(),nextDouble()在接收數(shù)據(jù)的時候,會遇到空格,回車,制表符其中一個就會停止接收數(shù)據(jù)。但是這些符號 + 后面的數(shù)據(jù)還在內(nèi)存中并沒有接收。如果后面還有其他鍵盤錄入的方法,會自動將這些數(shù)據(jù)接收。
代碼示例:
Scanner sc = new Scanner(System.in); String s1 = sc.next(); String s2 = sc.next(); System.out.println(s1); System.out.println(s2); //此時值鍵盤錄入一次a b(注意a和b之間用空格隔開) //那么第一個next();會接收a,a后面是空格,那么就停止,所以打印s1是a //但是空格+b還在內(nèi)存中。 //第二個next會去掉前面的空格,只接收b //所以第二個s2打印出來是b
第三個細節(jié):
nextLine()方法是把一整行全部接收完畢。
代碼示例:
Scanner sc = new Scanner(System.in); String s = sc.nextLine(); System.out.println(s); //鍵盤錄入a b(注意a和b之間用空格隔開) //那么nextLine不會過濾前面和后面的空格,會把這一整行數(shù)據(jù)全部接收完畢。
三、混用引起的后果
上面說的兩套鍵盤錄入不能混用,如果混用會有嚴重的后果。
代碼示例:
Scanner sc = new Scanner(System.in);//① int i = sc.nextInt();//② String s = sc.nextLine();//③ System.out.println(i);//④ System.out.println(s);//⑤
當代碼運行到第二行,會讓我們鍵盤錄入,此時錄入123。
但是實際上我們錄的是123+回車。
而nextInt是遇到空格,回車,制表符都會停止。
所以nextInt只能接受123,回車還在內(nèi)存中沒有被接收。
此時就被nextLine接收了。
所以,如果混用就會導致nextLine接收不到數(shù)據(jù)。
四、結(jié)論(如何使用)
鍵盤錄入分為兩套:
- next()、nextInt()、nextDouble()這三個配套使用。
如果用了這三個其中一個,就不要用nextLine()。
- nextLine()單獨使用。
如果想要整數(shù),那么先接收,再使用Integer.parseInt進行類型轉(zhuǎn)換。
代碼示例:
Scanner sc = new Scanner(System.in);
String s = sc.next();//鍵盤錄入123
System.out.println("此時為字符串" + s);//此時123是字符串
int i = sc.nextInt();//鍵盤錄入123
System.out.println("此時為整數(shù):" + i);Scanner sc = new Scanner(System.in);
String s = sc.nextLine();//鍵盤錄入123
System.out.println("此時為字符串" + s);//此時123是字符串
int i = Integer.parseInt(s);//想要整數(shù)再進行轉(zhuǎn)換
System.out.println("此時為整數(shù):" + i);總結(jié)
到此這篇關(guān)于java鍵盤錄入的文章就介紹到這了,更多相關(guān)java鍵盤錄入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java實現(xiàn)多人聊天工具(socket+多線程)
這篇文章主要為大家詳細介紹了java實現(xiàn)多人聊天工具,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08
Java 關(guān)鍵字 volatile 的理解與正確使用
本文主要介紹 volatile 的使用準則,以及使用過程中需注意的地方,感興趣的朋友一起看看吧2017-06-06
使用Java根據(jù)文件路徑下載zip文件到本地代碼示例
在開發(fā)過程中我們會遇到需要對文件進行壓縮并下載的功能需求,這篇文章主要給大家介紹了關(guān)于如何使用Java根據(jù)文件路徑下載zip文件到本地的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-03-03
CompletableFuture并行處理List分批數(shù)據(jù)demo
這篇文章主要介紹了CompletableFuture并行處理List分批數(shù)據(jù)實現(xiàn)實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11
Java有趣好玩的圖形界面開發(fā)八個案例實現(xiàn)
今天使用GUI技術(shù)寫了幾個練習的Demo,希望對大家學習圖形用戶界面有所幫助,感興趣的同學來看看吧,動手敲一遍理解更通透2022-05-05
SpringBoot如何統(tǒng)一清理數(shù)據(jù)
這篇文章主要介紹了SpringBoot如何統(tǒng)一清理數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
java web請求和響應中出現(xiàn)中文亂碼問題的解析
這篇文章主要為大家解析了java web請求和響應中出現(xiàn)中文亂碼問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10

