Jave之Scanner和不合法输入处理
Java Scanner 類
java.util.Scanner 是 Java5 的新特征,我們可以通過 Scanner 類來獲取用戶的輸入。
1.使用前需要導(dǎo)入Scanner工具包:
import java.util.Scanner;2. 創(chuàng)建 Scanner 對象的基本語法:
Scanner input = new Scanner(System.in);//創(chuàng)建了一個叫input的Scanner對象
注:
import是輸入的意思。
util,utiliy的縮寫,意即,工具性的包。主要包含集合類(如ArrayList,HashMap等),隨機數(shù)產(chǎn)生類,屬性文件讀取類,定時器類等類。
Scanner,掃描儀,使用分隔符模式將其輸入分解為標記,默認情況下該分隔符模式與空白匹配。然后可以使用不同的 next 方法將得到的標記轉(zhuǎn)換為不同類型的值。
next方法:
1)next() :讀取不全帶空格的字符串(<過濾前面遇到的空格等非有效字符>,直到讀取有效字符后結(jié)束讀取)
2)nextLine() : 可以完全讀取帶空格的字符串
(以Enter為結(jié)束符,也就是說 nextLine()方法返回的是輸入回車之前的所有字符)
3)nextInt() :讀取int型數(shù)字
4)nextFloat() :讀取float型數(shù)字
5)nextLong() :讀取long 型數(shù)字
6)nextDouble() :讀取double型數(shù)字
…
讀取之前都最好使用**hasNext+首字母大寫的類型名()**來進行驗證讀取之前輸入是否合法(這種方法比下面談到的try catch更好理解~)
例如:(注意main函數(shù)括號中應(yīng)該寫成String [] args,阿里巴巴java開發(fā)手冊中提的這點,[]是String 數(shù)組的一部分,之前我寫的不規(guī)范,現(xiàn)在更正了,截圖更新了)
上面代碼的測試:
*3.如果使用時出現(xiàn)提示:**Resource leak :‘scanner’ is never closed,*需要加上Scannner對象名.close();(一般都是成對使用,放在同一個方法(如果存在循環(huán)要放在同一個循環(huán)里)<函數(shù)>里面)
**
try catch捕獲不合法輸入
**
結(jié)構(gòu)示例:
//
import java.util.Scanner;public class ScannerTest {public static void main(String[] args) {int d = 0;boolean falseInput = true;while(falseInput){System.out.println("請輸入一個整數(shù):");Scanner input = new Scanner(System.in);try {d = input.nextInt();}catch(Exception e) {System.out.println("輸入有誤!");/*如果捕獲到異常輸入(就此而言輸入的不是int整數(shù))*/continue;}/*直到?jīng)]有捕獲到異常*/falseInput = false;}System.out.println("input num is : "+d);}}測試:
注意:
如果Scanner input = new Scanner(System.in);放在了while之前,一旦輸入異常將陷于死循環(huán).
總結(jié)
以上是生活随笔為你收集整理的Jave之Scanner和不合法输入处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小a的计算器(牛客签到题A)-简单模拟
- 下一篇: 关于java几种输出的区别