Transcript 十、輸入與輸出的格式化
Java 入門到認證 十、輸入與輸出的格式化 作者:許裕永 1、Pattern 1-1 建立樣式的符號 \d 一個數字字元。 \s 一個空白字元。 \w 一個文字字元,數字字元或底線符號。 ‧ 一個任意字元(含空白)。 〔〕 括號中的指定字元,若有括號有一個以上之字元,則表示括號中的任意一個字元均可。 〔-〕 括號中‘-’前後字元之間的所有字元。 1-2 建構物件 Pattern和Math類別一樣,它們都不是抽象類別,但是也都沒有提供建構方法,所以 也都不能用new建構物件。 1-3 重要方法 static boolean matches(String regex, CharS equence input) static Pattern compile(String regex) String[] split(CharSequence input) Matcher matcher(CharSequence input) 2、Matcher 2-1 建構物件 Matcher類別,也不是抽象類別,也沒有提供建構方法,而且沒有提 供任何的類別方法成員來建構物件,它的物件只能透過Pattern物件 呼叫matcher方法來建構。 2-2 重要方法 boolean find() String group() int start() Matcher usePattern(Pattern newPat tern) boolean matches() 3、Scanner 3-1 建構物件 Scanner(File source) Scanner(InputStream source) Scanner(Readable source) Scanner(String source) 3-2 重要方法 boolean hasNext() String next() boolean hasNextLine() String nextLine() boolean hasNext(樣式參數) String next(樣式參數) boolean hasNextXxx() Xxx nextXxx() 4、PrintStream PrintWriter 與 4-1 建構物件 PrintStream(File file) PrintStream(OutputStream out) PrintStream(String fileName) 4-2 重要方法 void println() void print(參數) void println(參數) PrintStream printf(String format, Object... args) PrintStream format(String format, Object... args) 5、認證重點 5-1 Pattern Pattern和Math類別一樣,它們都不是抽象類別,但是也都沒有提供建構 方法,所以也都不能用new建構物件。 matches()的檢測是包含樣式與字數都必須完全符合。 compile(String regex)會依照String物件的樣式,來 建構Pattern物件。請注意不是getInstance()。 matcher(CharSequence input)會建構Matcher 物件。 5-2 Matcher Matcher類別,也不是抽象類別,也沒有提供建構方法,而且沒有提供任何的 類別方法成員來建構物件,它的物件只能透過Pattern物件呼叫matche r方法來建構。 5、認證重點(二) 5-3 Scanner java‧util‧Scanner類別的物件,是Java為了簡化輸入的流程,特別新設計的類別。它能接 收任何InputSteam或檔案的資料,還能從資料來源中,只擷取部份特定樣式的文字,或特定格式的資 料進入程式。 以File物件建構Scanner物件,就是開啟檔案來做為資料來源。相對的也請記得,讀檔完畢後應呼叫 close()來關閉檔案。 System‧in指的是java‧lang‧System類別中的類別常數成員in。它是一個InputS tream類別的物件,用來接收鍵盤的輸入。但是它提供read()一次只能讀一個字元,操作上不方便, 所以本書中都利用它建構Scanner物件,來簡化接收鍵盤輸入的程式碼。 擷取部份資料時,應利用hasNext()搭配next(),才比較不會造成執行時期的錯誤。 5-4 PrintStream與PrintWriter Java加強了Java‧io中的PrintStream及PrintWriter兩個類別來簡化輸出的流 程。 System‧out‧println();中的System‧out,指的是java‧lang‧Syste m類別中的類別常數成員out,而out便是一個以PrintStream類別建構的物件。而輸出的目的 地是螢幕。 用String物件代表檔案名稱,可以省略建構File物件的步驟,但也就沒有辦法指定是要以加入或覆蓋 的方式輸出。 在printf()中的第二個參數寫的是Object‧‧‧,指的是任意個物件,也因為是物件,所以應該要用 Wrapper Classes的類別建構的物件。不過因為有Auto Boxing 及 unBoxi ng所以撰寫程式時,即使變數是用基本資料型別宣告也是可以的。另外,以運算式為參數也可以。 printf()的String參數中設定格式的完整語法(中括號代表可以省略): %〔參數序號$〕〔格式代號〕〔寬度〕〔‧小數點位數〕資料型別代號