使用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類建構一個對象, newInputStreamReader(System.in)表示接受一個System.in對象來建構一個InputStreamReader對象。
您可以在學過對象導向觀念之後再來看這段,現階段若您比較難理解,就記得上面的緩衝區讀取對象建立方式,通常要使用BufferedReader來取得使用者的輸入都是這麼寫的。
下面這個程序可以在文字模式下取得使用者輸入(可包括空白字節輸入),並重新顯示在主控台中:
import java.io.*;public class GetInput {public static void main(String[]args) throws IOException {BufferedReader buf = newBufferedReader( newInputStreamReader(System.in));System.out.print("請輸入一列文字: ");String text = buf.readLine();System.out.println("您輸入的文字: " + text);}}readLine()方法會傳回使用者在按下Enter鍵之前的所有字節輸入,不包括最後按下的Enter返回字節,程序的執行範例如下所示:
請輸入一列文字: This is a test!
您輸入的文字: This is a test!
以上就是本文關於Java中BufferedReader類獲取輸入輸入字符串實例的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!