Scanner類
如果程序能在執行期間交互地從用戶輸入中讀取數據,就可使程序每執行一次時計算出新結果,並且新結果取決於輸入數據。這樣的程序才具有實用性。
Scanner類屬於 Java API,可提供一些方便的方法用於交互式讀取不同類型的輸入數據。輸入可以來自於不同的數據源,包括用戶鍵入的數據或保存在文件中的數據。Scanner類還可以用於將一個字符串解析為若干個子串。圖27列舉了由 Scanner類提供的部分方法。
重點概念:Scanner類提供了一些從不同數據源讀取各種類型數據的方法。
首先必須創建 Scanner類對象,以便引用其方法。在Java中用new運算符創建對象。下面的明創建一個從鍵盤讀取輸入數據的 Scanner類對象
Scanner = scan new Scanner(System. in)
上述語句創建了一個變量scan,它代表一個 Scanner對象。該對象本身由new運算符創建。
new運算符將調用 Scanner類的一個特殊方法(稱為構造方法)來建立對象。Scanner類構造方法接收一個參數,該參數指定輸入數據源。System.in對象代表標准輸入流設備,默認為鍵盤。關於用new運算符創建對象的方法,將在第3章進一步討論。
除非特別說明,Scanner對象假定空白字符(空格符、制表符和換行符)用於分離輸人數據流中的各個數據項(稱為 token)。上述空白字符也稱為輸入分隔符。如果輸入數據項是用非空白字符分隔開的,則可以重新定義一組輸入分隔符。
Scanner類的next方法將下一個輸入數據項作為字符串讀人並返回該字符串。因此,如果輸入數據由一系列用空格分隔的單詞組成,則每次調用next方法將返回下一個單詞。nextline方法讀取所有數據直到輸入行結束,並將所讀取數據作為一個字符串返回例28給出的Echo程序,其功能是讀一行用戶鍵入的文本,存放在 String型的變量中,然后回顯在屏幕上。
在Echo類定義代碼上面的一行 Import語句告訴程序,本程序中要使用 Scanner類。Scanner類是 java.util類庫的一部分。Import語句的用法將在第3章討論有各種不同的 Scanner類方法,如 nextInt和 nextDouble,用於讀取不同類型的數據。例29中的 Gas Mileaεe程序按整型值讀取行程英里數,按 double型值讀取消耗的燃料加侖數,然后計算消耗每加侖燃料所行駛的里程數。
//******************************************************************** // Echo.java Author: Lewis/Loftus // // Demonstrates the use of the nextLine method of the Scanner class // to read a string from the user. //******************************************************************** import java.util.Scanner; public class Echo { //----------------------------------------------------------------- // 從用戶處讀取字符串並打印。 //----------------------------------------------------------------- public static void main(String[] args) { String message; Scanner scan = new Scanner(System.in); System.out.println("Enter a line of text:"); message = scan.nextLine(); System.out.println("You entered: \"" + message + "\""); } }