1. 程式人生 > >3.7.1 讀取輸入

3.7.1 讀取輸入

    前面已經看到,列印輸出到“標準輸出流”(即控制檯視窗)是一件廢話從那個容易的事情,只要呼叫System.out.println即可。然而,讀取“標準輸入”System.in就沒那麼簡單了。要想通過控制檯進行輸入,首先需要構造一個Scanner物件,並與“標準輸入流”System.in關聯。           Scanner in= new Scanner(System.in);       現在,就可以使用Scanner類的各種方法實現輸入操作了。例如,nextLine方法將輸入一行。                           import java.util.Scanner;             System.out.println("What's your name ?");             Scanner in = new Scanner(System.in);             String s = in.nextLine();             System.out.println(s);       在這裡,使用nextLine方法是因為在輸入行中有可能包含空格。想要讀取一個單詞(以空白符作為分隔符),就呼叫         String firstName = in.next() ;       要想讀取一個證書,就用nextInt方法。         int age = in.nextInt();       於此類似,要想讀取下一個浮點數,就呼叫nextDouble方法。       在程式清單3-2的程式中,詢問使用者姓名和年齡,然後列印一條如下格式的訊息:         Hello, Cay Next year, you'll be 57                 System.out.println("What's your name ?");             Scanner in = new Scanner(System.in);             String name = in.nextLine();             int age = in.nextInt();             System.out.println("Hello"+", "+name+", "+"Next year"+", you'll be "+(age+1));               //What's your name ?             //Mark             //28             //Hello, Mark, Next year, you'll be 29     最後,需要注意的是 Scanner類定義在java.util包中。當使用的類不是定義在基本java.lang包中時,一定要使用import指示符將相應的包載入進來。有關包與import指示字的詳細描述在下章。     因為輸入時可見的,所以Scanner類不適用於從控制檯讀取密碼。Java SE 6特別引入了Console類實現這個目的。要想讀取一個密碼,可以採用下列程式碼:         Console cons = System.console();         String username = cons.readLine("User name: ");         char[] passwd = cons.readPassword("Password: ");               Console cons = System.console();             String username = cons.readLine("User name: ");             char[] passwd = cons.readPassword();             System.out.println("Username:" + username + " Password:" + passwd);                          java.util.Arrays.fill(passwd, ' ');             System.out.println(cons);     System.console() returns null if there is no console.     java.util.Scanner 5.0  
方法名 返回型別 說明
Scanner(InputStream in)   用給定的輸入流建立一個Scanner物件
nextLine() String 讀取輸入的下一行內容
next() String 讀取輸入的下一個單詞(以空格作為分隔符)
nextInt() int 讀取一個整型數字
nextDouble() double 讀取並轉換下一個表示整數或浮點數的字元序列
hasNext() boolean 檢測輸入中是否還有其他單詞
hasNextInt() boolean 檢測輸入中是否還有其他整數
hasNextDouble() boolean 檢測輸入中是否還有其他浮點數
  java.lang.System       static Console console()     如果有可能進行互動操作,就通過控制檯視窗為互動的使用者返回一個Console物件,否則返回null。對於任何一個通過控制檯視窗啟動的程式,都可使用Console物件。否則,其可用性將與所使用的系統有關。   java.io.Console     static char[] readPasswrod(String  prompt,object...args)     static String readLine(String prompt, object...args)     顯示字串prompt並且讀取使用者輸入,直到輸入結束。args引數可以用來提供輸入格式。