java.util.Scanner應用詳解

java.util.Scanner應用詳解
 
java.util.Scanner是Java5的新特徵,主要功能是簡化文本掃描。這個類最實用的地方表如今獲取控制檯輸入,其餘的功能都很雞肋,儘管Java API文檔中列舉了大量的API方法,可是都不怎麼地。
 
1、掃描控制檯輸入
 
這個例子是經常會用到,可是若是沒有Scanner,你寫寫就知道多難受了。
當經過new Scanner(System.in)建立一個Scanner,控制檯會一直等待輸入,直到敲回車鍵結束,把所輸入的內容傳給Scanner,做爲掃描對象。若是要獲取輸入的內容,則只須要調用Scanner的nextLine()方法便可。
 
/**
* 掃描控制檯輸入
*
* @author leizhimin 2009-7-24 11:24:47
*/

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
 
先寫這裏吧,有空再繼續完善。
 
2、若是說Scanner使用簡便,不如說Scanner的構造器支持多種方式,構建Scanner的對象很方便。
 
能夠從字符串( Readable)、輸入流、文件等等來直接構建Scanner對象,有了Scanner了,就能夠逐段(根據正則分隔式)來掃描整個文本,並對掃描後的結果作想要的處理。
 
3、Scanner默認使用空格做爲分割符來分隔文本,但容許你指定新的分隔符
 
使用默認的空格分隔符:
         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
 
 
4、一大堆API函數,實用的沒幾個
 
(不少API,註釋很讓人迷惑,幾乎毫無用處,這個類就這樣被糟蹋了,啓了很不錯的名字,實際上作的全是齷齪事)
 
下面這幾個相對實用:
 
delimiter()
          返回此 Scanner 當前正在用於匹配分隔符的 Pattern。
hasNext()
          判斷掃描器中當前掃描位置後是否還存在下一段。(原APIDoc的註釋很扯淡)
hasNextLine()
          若是在此掃描器的輸入中存在另外一行,則返回 true。
next()
          查找並返回來自此掃描器的下一個完整標記。
nextLine()
          此掃描器執行當前行,並返回跳過的輸入信息。
 
 
5、逐行掃描文件,並逐行輸出
 
看不到價值的掃描過程
         public static void main(String[] args) throws FileNotFoundException {
                InputStream in = new FileInputStream( new File( "C:\\AutoSubmit.java"));
                Scanner s = new Scanner(in);
                 while(s.hasNextLine()){
                        System.out.println(s.nextLine());
                }
        }
 
package own;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.ProtocolException;
import java.net.URL;

import com.verisign.uuid.UUID;

/**
* ��һ������թƭ��վ�Զ��ύ������Ϣ�ij����ÿտ�������һ�¡�
* @author wangpeng
*
*/
public class AutoSubmit {

  /**
    * @param args
    * @throws Exception    
    */
  public static void main(String[] args) throws Exception {

...在此省略N行

Process finished with exit code 0
 
Java對字符串支持仍是比較弱的,儘管Java一直在努力。
 
Java的確 老勢已經下來了,愈來愈龐大臃腫,往昔的輝煌正成爲Java前進路上的絆腳石,爲了向後兼容,爲了平穩的過分,不得不作不少痛苦的選擇。
若是Java能直接出Java III,徹底拋棄現有的糟粕,全新設計語法和風格。Java也許會繼續輝煌下去。
相關文章
相關標籤/搜索