Java.util.Scanner是Java5.0的新特征,主要功能是簡化文本掃描。這個類最實用的地方表現在獲取控制臺輸入,其他的功能都很雞肋,盡管Java API文檔中列舉了大量的API方法,但是都不怎么地。
一、掃描控制臺輸入
這個例子是常常會用到,但是如果沒有Scanner,你寫寫就知道多難受了。
當通過new Scanner(System.in)創建一個Scanner,控制臺會一直等待輸入,直到敲回車鍵結束,把所輸入的內容傳給Scanner,作為掃描對象。如果要獲取輸入的內容,則只需要調用Scanner的nextLine()方法即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
/** * 掃描控制臺輸入 * */ public class TestScanner { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println( "請輸入字符串:" ); while ( true ) { String line = s.nextLine(); if (line.equals( "exit" )) break ; System.out.println( ">>>" + line); } } } |
請輸入字符串:
234
>>>234
wer
>>>wer
bye
>>>bye
exit
Process finished with exit code 0
二、如果說Scanner使用簡便,不如說Scanner的構造器支持多種方式,構建Scanner的對象很方便。
可以從字符串(Readable)、輸入流、文件等等來直接構建Scanner對象,有了Scanner了,就可以逐段(根據正則分隔式)來掃描整個文本,并對掃描后的結果做想要的處理。
三、Scanner默認使用空格作為分割符來分隔文本,但允許你指定新的分隔符
使用默認的空格分隔符:
1
2
3
4
5
6
7
|
public static void main(String[] args) throws FileNotFoundException { Scanner s = new Scanner( "123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf ......asdfkl las" ); // s.useDelimiter(" |,|\\."); while (s.hasNext()) { System.out.println(s.next()); } } |
123
asdf
sd
45
789
sdf
asdfl,sdf.sdfl,asdf
......asdfkl
las
Process finished with exit code 0
將注釋行去掉,使用空格或逗號或點號作為分隔符,輸出結果如下:
123
asdf
sd
45
789
sdf
asdfl
sdf
sdfl
asdf
asdfkl
las
Process finished with exit code 0
四、相對實用的API
下面這幾個相對實用:
delimiter()
返回此 Scanner 當前正在用于匹配分隔符的 Pattern。
hasNext()
判斷掃描器中當前掃描位置后是否還存在下一段。(原APIDoc的注釋很扯淡)
hasNextLine()
如果在此掃描器的輸入中存在另一行,則返回 true。
next()
查找并返回來自此掃描器的下一個完整標記。
nextLine()
此掃描器執行當前行,并返回跳過的輸入信息。
以上所述是小編給大家介紹的Java Scaner類詳解_動力節點Java學院整理,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!