標籤:
Scanner 在java.util包中,需要引入時可以用import java.util.*;或者import java.util.Scanner;
工作原理:通過new建立一個Scanner對象,Scanner需要傳入一個System.in作為參數,這個我們可以看作是Scanner通過其內部機制將System.in封裝起來而實現資料的讀取工作的。Scanner對象通過一系列的in.nextXxx();方法來讀取相應的基本類型的資料,通過in.hasNextXxx();方法來判斷是否還有下一個資料。 然而,Scanner讀取資料是按空格符,這其中包括空格鍵,Tab鍵,Enter鍵。只要遇到其中之一,Scanner的方法就會返回下一個輸入 ,這也就是我們會面臨的另一個問題,當我們的輸入資料中有空格時,我們就不會得到我們想要的資料,這樣我們就要考慮到BufferReader來讀取資料啦!
實際程式:
1 import java.util.Scanner;2 public class ScannerTester{3 public static void main(String[] args){4 System.out.print("please input the name:");5 Scanner scanner = new Scanner(System.in);6 String name = scanner.nextLine();7 System.out.println(name);8 } 9 }
BufferReader位於java.io包中,需要引入時可以用import java.io.*;或者import java.io.BufferedReader;。
使用BufferReader就相對來說沒有那麼多方法來讓你選擇,讀取資料比較固定,這樣格式也就相對來說比較單一,只要記住就這一讀取資料的方法。BufferReader br = new BufferReader(new InputStreamReader(System.in));。這個BufferReader對象通過readLine();方法來讀取資料,readLine()是按Enter斷行符號來讀取一行資料的,只要在斷行符號鍵之前的都會被readLine();方法返回, 然而,要使用BufferReader輸入一些字元之外的類型的資料,就要相對比較麻煩,需要通過一些XXXX.parseXxx();來轉換相應的資料類型,雖然,麻煩一些,但通過在一些OJ系統上的和Scanner作對比,BufferReader的效率要比Scanner高一倍,這個差距可想而知,讀取的資料越多,效果就越明顯。
實際程式:
import java.io.BufferedReader;public class BufferedReaderTester{public static void main(String[] args){System.out.print("please input the adress:");BufferedReader bufferedReader1 = new BufferedReader(new InputStreamReader(System.in));String adress = bufferedReader1.readLine();System.out.println(adress);}}
java中輸入方式Scanner和BufferedReader