|
使用Scanner來取得使用者的輸入很方便,但是它以空白來區隔每一個輸入字串,在某些時候並不適用,因為使用者可能輸入一個字串,中間會包括空白字
元,而您希望取得完整的字串。 您可以使用BufferedReader類 別,它是java.io套件 中所提供的一個類別,所以使用這個類別時必須先import java.io套件;使用BufferedReader物件的readLine()方法必須處理IOException例外 (exception),例外處理機制是Java提 供給程式設計人員捕捉程式中可能發生的錯誤所提供的機制,現階段您處理IOException的方法是在main()方法後,加上 throws IOException,這在以後會再詳細討論為何要這麼作。 BufferedReader在建構時接受一個Reader物 件,在 讀取標準輸入串流時,會使用InputStreamReader, 它 繼承了 Reader類別,您使用以下的方法來為標準輸入串流建立緩衝區物件: BufferedReader
buf = new BufferedReader(
new InputStreamReader(System.in)); "new"關鍵字表示您要建構一個物件為您所用,BufferedReader buf表示宣告一個型態為BufferedReader的物件變數,而new BufferedReader()表示以BufferedReader類別建構一個物件,new InputStreamReader(System.in)表示接受一個System.in物件來建構一個InputStreamReader物件。 您可以在學過物件導向觀念之後再來看這段,現階段若您比較難理解,就記得上面的緩衝區讀取物件建立方式,通常要使用BufferedReader來取得使 用者的輸入都是這麼寫的。 下面這個程式可以在文字模式下取得使用者輸入(可包括空白字元輸入),並重新顯示在主控台中:
import java.io.*; readLine()方法會傳回使用者在按下Enter鍵之前的所有字元輸 入,不包括最後按下的 Enter返回字元,程式的執行範例如下所示:
|