當程序需要從鍵盤獲取用戶輸入的命令或數據時,例如:獲取用戶輸入的計算表達式。可以通過Scanner類方便地獲取用戶輸入。
通過Scanner類獲取用戶輸入時,控制臺會一直等待用戶的輸入,直到用戶敲回車鍵結束,把所輸入的內容傳給Scanner,程序要從Scanner獲取輸入的內容,則只需要調用Scanner的nextLine()方法即可。
Scanner類的初始化
聲明一個scanner變量,並用new運算符實例化Scanner,實例化Scanner時,需要傳入System.in對象,Scanner通過傳入的System.in獲取用戶輸入,並對用戶輸入的字符進行處理,屏蔽了獲取用戶輸入的複雜操作。
Scanner scanner = new Scanner(System.in);
示例1:Scanner類的初始化
在D盤Java目錄下,新建「ScannerInitSample.java」文件。用記事本打開「ScannerInitSample.java」文件,輸入以下代碼:
代碼結構分析
程序功能主要是演示Scanner如何聲明及初始化。
語句「import java.util.*;」,用於導入包含Scanner的類庫,Scanner包含在Java 核心類庫util中,要使用Scanner類,必須導入java.util庫,類庫導入關鍵字為import。
編譯「ScannerInitSample.java」文件,在命令行窗口輸入「javac ScannerInitSample.java」並執行命令,編譯通過後,在命令行窗口輸入「java ScannerInitSample」運行Java程序,命令行窗口顯示如下信息:
Scanner類的方法
Scanner類提供了多個方法,用於完成字符串的輸入。下面列舉了幾個主要的操作方法,其它方法請參考Java API:
(1)方法名稱:next()
方法說明:返回由輸入設備輸入的有效字符,返回類型為字符串。該方法一定要讀取到有效字符後才能返回。
方法示例:
Scanner sc = new Scanner(System.in);
String szWelcome = sc.next();
(2)方法名稱:nextLine()
方法說明:返回由輸入設備輸入的字符串,返回類型為字符串。該方法以用戶按下回車鍵(Enter)結束當前輸入。
方法示例:
Scanner sc = new Scanner(System.in);
String szWelcome = sc. nextLine() ;
示例2:Scanner類的輸入操作
在D盤Java目錄下,新建「ScannerInputSample.java」文件。用記事本打開「ScannerInputSample.java」文件,輸入以下代碼:
代碼結構分析
程序功能主要是演示Scanner的next和nextLine輸入方法的區別。
語句「import java.util.*;」,用於導入包含Scanner的類庫,Scanner包含在Java 核心類庫util中,要使用Scanner類,必須導入java.util庫,類庫導入關鍵字為import。
語句「String tempValue = sc.nextLine();」,通過nextLine方法獲取用戶輸入,用戶按下回車鍵(Enter),nextLine返回按下回車鍵前所有輸入的字符。
語句「tempValue = sc.next();」,通過next方法獲取用戶輸入,用戶按下回車鍵(Enter),next返回過濾空格後的字符串。
編譯「ScannerInputSample.java」文件,在命令行窗口輸入「javac ScannerInputSample.java」並執行命令,編譯通過後,在命令行窗口輸入「java ScannerInputSample」運行Java程序,命令行窗口顯示如下信息:
從上述結果可以看出,nextLine返回按下回車鍵前輸入的所有字符,包括空格;next則返回過濾掉空格後的字符串。
Scanner僅是簡化了文本的輸入,Scanner通過傳入的InputStream從鍵盤獲取用戶輸入的字符串,然後對字符進行相應處理並返回。
編寫一個程序,應用Scanner的next和nextLine方法獲取用戶輸入的字符串,辨別兩種輸入方法的不同之處。