使用者輸入使用Scanner |
java.util.Scanner scanner=new java.util.Scanner(System.in); |
在建立Scanner實例時,必須給他一個System.in作為參數,這是因為實際取得輸入的工作,仍是System.in在進行,如果你要取得一個整數,只要告訴Scanner,Scanner則會命令System.in取得輸入,並將輸入作轉換,再將結果傳給你。
在建立Sanner實例之後,要進行形態轉換可以使用下列語法:
- nextInt() 可將使用者輸入轉換為int型態。
- nextShort() 可取得使用者輸入Short型態。
- nextLong() 可取得使用者輸入Long型態。
- nextDouble() 可取得double型態的輸入。
- next() 可將使用者輸入String型態。
- .........
如果Scanner無法將使用者的輸入轉換為指定的資料型態,則程式就會發生錯誤。
還有要注意的是使用Scanner的next()取得輸入的依據是空白字元,如果在輸入中間有空白字元則空白字元以後的輸入將不會取得,而程式就會出現錯誤。
使用Scanner來取得使用者的輸入很方便,但是它以空白來區隔每一個輸入字串,在有些時候並不方便,因為使用者可能輸入一個字串,中間會包括空白字 元,而您希望取得完整的字串。這個時候就可以使用BufferedReader。
使用者輸入使用BufferedReader |
BufferedReader在建構時接受一個Reader物 件,在 讀取標準輸入串流時,會使用InputStreamReader它 繼承了 Reader類別,使用以下的方法來為標準輸入串流建立緩衝區物件:
BufferedReader buf = new BufferedReader( new InputStreamReader(System.in)); |
可以在學過物件導向之後再回來看這一段,不過要記得BufferedReader來取得使用者的輸入都是這麼寫的。
範例
範例程式 |
- Ch1_5 .java
package chapter; public class Ch1_5 { public static void main(String[] args) { java.util.Scanner scanner = new java.util.Scanner(System.in); System.out.print("請輸入訊息"); String s = scanner.next(); System.out.print("輸入整數"); int input1 = scanner.nextInt(); System.out.print("輸入浮點數"); double input2 = scanner.nextDouble(); System.out.print("輸入布林值"); boolean input3 = scanner.nextBoolean(); System.out.print("=====開始取得輸入======="); System.out.println("訊息輸入" + s); System.out.println("整數輸入" + input1); System.out.println("浮點數輸入" + input2); System.out.println("布林值輸入" + input3); } } |
- Ch1_5_1 .java
package chapter; import java.io.*; public class Ch1_5_1 { public static void main(String[] args) throws IOException { BufferedReader buf = new BufferedReader( new InputStreamReader(System.in)); System.out.print("請輸入訊息: "); String s = buf.readLine(); System.out.println("您輸入的訊息: " + s); } } |
沒有留言:
張貼留言