Scanner類用於獲取鍵盤輸入(是一個基於正則表達式的文本掃描器),它能夠從文件、字符串、輸入流中解析出基本類型值和字符串值。Scanner類提供了多個構造器,不一樣的構造器能夠接收文件、字符串和輸入流做爲數據源,用於從文件、字符串和輸入流中解析數據。html
Scanner類主要提供了兩個方法來掃描輸入:
1)hasNextXx():是否還有下一個輸入項,其中Xxx能夠是Int、Long等表明基本數據類型的字符串。若是隻是判斷是否包含下一個字符串,則直接使用hasNext()。java
2)nextXxx():獲取下一個輸入項。Xxx的含義同上。正則表達式
默認狀況下,Scanner使用空白(包括空格、Tab空白和回車)做爲多個輸入項的分隔符。微信
下面程序使用Scanner來得到用戶的鍵盤輸入:spa
public class Test{ public static void main(String[] args){ //System.in表明鍵盤輸入 Scanner sc = new Scanner(System.in); //下面這行代碼是把回車做爲分隔符 sc.useDelimiter("\n"); //判斷是否還有下一個輸入項 while(sc.hasNext()){ //輸出輸入項 System.out.println("鍵盤輸入的內容是:"+sc.next()); } } }
運行上面的程序,程序會經過Scanner不斷的從鍵盤讀取鍵盤輸入,而後打印到控制檯,程序運行效果以下:code
java 鍵盤輸入的內容是:java c++ 鍵盤輸入的內容是:c++ html 鍵盤輸入的內容是:html
爲Scanner設置分隔符使用 useDelimiter(String pattern)方法便可,該方法的參數是一個正則表達式(後面發佈內容會介紹到),若是把上面程序這一行sc.useDelimiter("\n")註釋掉,該程序就會把鍵盤的每行輸入當成一個輸入項,不會以空格、Tab空白或回車等做爲分隔符。htm
其實,Scanner提供了兩個簡單的逐行讀取的方法:對象
1)boolean hasNextLine():返回輸入源中是否還有下一行。blog
2)String nextLine():返回輸入源中下一行的字符串。字符串
Scanner除了能夠獲取字符串輸入項以外,還能夠獲取任意基本類型的輸入項,以下程序:
public class Test{ public static void main(String[] args){ //System.in表明鍵盤輸入 Scanner sc = new Scanner(System.in); //判斷是否還有下一個long型整數 while(sc.hasNextLong()){ //輸出輸入項 System.out.println("鍵盤輸入的內容是:"+sc.nextLong()); } } }
上面程序經過hasNextLong()和nextLong()兩個方法能夠直接獲取輸入的Long型整數,若是須要獲取其它基本類型的輸入項,則能夠用相同的方法。
Scanner除了能讀取鍵盤輸入外,還能夠讀取文件輸入。只要在建立Scanner對象時傳入一個File對象做爲參數便可,例以下面的示例:
public class Test{ public static void main(String[] args) throws Exception{ //Scanner讀取文件內容:將一個File對象做爲Scanner的構造器參數 Scanner sc = new Scanner(new File("Test.java")); System.out.println("Test.java文件內容以下:"); //判斷是否還有下一行 while(sc.hasNextLine()){ //輸出文件的下一行 System.out.println(sc.nextLine()); } } }
上面程序由於涉及IO讀取,可能引起IO異常,因此程序聲明throws Exception代表main方法不處理任何異常。
歡迎關注微信公衆號【Java典籍】,收看更多Java技術乾貨!
▼微信掃一掃下圖↓↓↓二維碼關注