当程序需要从键盘获取用户输入的命令或数据时,例如:获取用户输入的计算表达式。可以通过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程序,命令行窗口显示如下信息:
图 5-12 Scanner初始化执行结果
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程序,命令行窗口显示如下信息:
图 5-13 Scanner类的输入操作执行结果
从上述结果可以看出,nextLine返回按下回车键前输入的所有字符,包括空格;next则返回过滤掉空格后的字符串。
Scanner仅是简化了文本的输入,Scanner通过传入的InputStream从键盘获取用户输入的字符串,然后对字符进行相应处理并返回。
编写一个程序,应用Scanner的next和nextLine方法获取用户输入的字符串,辨别两种输入方法的不同之处。