2018年5月7日 星期一

JAVA.IO

3.2.1 使用 Scanner 取得輸入

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("請輸入您的名字:");
        System.out.printf("哈囉! %s!\n", scanner.next());
    }
}
先看看執行結果再來解釋程式的內容:

請輸入您的名字:良葛格
哈囉! 良葛格!

3.2.2 使用 BufferedReader 取得輸入

Scanner 取得輸入的依據是空白字元,舉凡按下空白鍵、tab 鍵或是 enter 鍵,Scanner 就會傳回下一個輸入,所以在某些時候並不適用,因為使用者可能輸入一個字串,中間會包括空白字元,而您希望取得完整的字串,如果您想要取得包括空白字元的輸入,比較簡單的方法是使用 java.io.BufferedReader 類別取得輸入

使用 BufferedReader 物件的 readLine() 方法必須處理 java.io.IOException 例外(exception),例外處理機制是 Java 提供給程式設計人員捕捉程式中可能發生的錯誤所提供的機制,現階段您處理 IOException 的方法是在 main() 方法加上 throws IOException,

BufferedReader 在建構時接受一個 java.io.Reader 物件,在讀取標準輸入串流時,您可以使用 java.io.InputStreamReader,它繼承(Inherit)了 Reader類別,您可以使用以下的方法來為標準輸入串流建立緩衝區物件:

BufferedReader bufferedReader = new BufferedReader(
                               new InputStreamReader(System.in));
BufferedReader bufferedReader 表示宣告一個型態為 BufferedReader 的參考名稱,而 new BufferedReader() 表示您以 BufferedReader 類別建構一個物件,new InputStreamReader(System.in) 表示接受一個 System.in 物件來建構一個 InputStreamReader 物件。

不用Java術語而用白話來解釋上一段的話,就是您增加一個 BufferedReader 工具,這個工具中還要加上一個 InputStreamReader 工具,而 InputStreamReader 工具中實際的核心是 System.in 工具,這三個工具組合在一起,就可以讓您進行文字輸入的讀取。

範例 3.7 BufferedReaderDemo.java

import java.io.*;

public class BufferedReaderDemo {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader =
                          new BufferedReader(
                             new InputStreamReader(System.in));

        System.out.print("請輸入一列文字,可包括空白: ");
        String text = bufferedReader.readLine();
        System.out.println("您輸入的文字: " + text);
    }
}
由於這次您所使用到的 BufferedReader、InputStreamReader 與 IOException 等類別,都是位在 java.io 套件下,所以在程式的一開頭可以使用 import 與 * 號,告訴編譯器到 java.io 下找這些類別。

readLine() 方法會傳回使用者在按下 Enter 鍵之前的所有字元輸入,不包括最後按下的 Enter 返回字元

Regular Expression 正則表示式做字串比對

Regular Expression 中文翻成正則表示式 英文簡寫為 Regex 或 RegExp RegExp 是用來比對字串是不是有符合正確的格式 語法很簡單而且大部分語言都有支援它 使用時機 譬如說你需要在程式內請使用者輸入生日 你規定的格式 1996-08...