当程序需要从键盘获取用户的输入时,就可以通过API库的Scanner类来获取用户的输入。当通过Scanner类获取用户输入时,控制台会一直等待用户的输入,直到用户敲回车键,用户的一次输入过程才结束。
Scanner类的初始化
程序要使用Scanner类,需要通过import关键字导入java.util.Scanner类。在代码中声明Scanner变量,并用new运算符实例化Scanner,实例化Scanner时,需要传入System.in对象,Scanner通过传入的System.in获取用户输入,并对用户输入的字符进行处理,屏蔽了获取用户输入的复杂操作。
实例化Scanner类的语法如下:
Scanner scanner = new Scanner(System.in);
案例1:Scanner类的初始化,在PbaseUnit8项目unit包下创建ScannerInitSample类。代码如下:
/**
* @Title: ScannerInitSample.java
* @Package unit
* @Description: Java基础知识课程案例
* @author 编程训练营
* @version V1.0
*/
package unit;
import java.util.Scanner;
/**
* @ClassName: ScannerInitSample
* @Description: Java API库的使用(Scanner类的使用)案例1
* @author 编程训练营
*
*/
public class ScannerInitSample {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
*
* @return void 返回类型 @throws
*/
public static void main(String[] args) {
// 声明Scanner变量,并用new运算符实例化Scanner
Scanner sc = new Scanner(System.in);
// 提示用户输入字符串
System.out.println("请输入字符串");
// 调用Scanner方法next()获取用户输入
String tempValue = sc.next();
// 输出用户输入的字符串
System.out.println("您输入的字符串是:"+ tempValue);
}
}代码结构分析
程序功能主要是演示Scanner如何声明及初始化。
语句“import java.util.Scanner;”,用于导入包含Scanner的类库,Scanner包含在Java 核心类库util中,要使用Scanner类,必须导入java.util.Scanner类,类库导入关键字为import。
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类的输入操作。在PbaseUnit8项目unit包下创建ScannerInputSample类。代码如下:
/**
* @Title: ScannerInputSample.java
* @Package unit
* @Description: Java基础知识课程案例
* @author 编程训练营
* @version V1.0
*/
package unit;
import java.util.Scanner;
/**
* @ClassName: ScannerInputSample
* @Description: Java API库的使用(Scanner类的使用)案例2
* @author 编程训练营
*
*/
public class ScannerInputSample {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
//声明Scanner变量,并用new运算符实例化Scanner
Scanner sc = new Scanner(System.in);
//提示用户输入字符串
System.out.println("请输入字符串");
//调用Scanner方法nextLine()获取用户输入
String tempValue = sc.nextLine();
//输出用户输入的字符串
System.out.println("您输入的字符串是(nextLine):" + tempValue);
//提示用户输入字符串
System.out.println("请输入字符串");
//调用Scanner方法next()获取用户输入
tempValue = sc.next();
//输出用户输入的字符串
System.out.println("您输入的字符串是(next):"+tempValue);
}
}代码结构分析
程序功能主要是演示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返回过滤空格后的字符串。
程序执行结果如下图所示:
从上述结果可以看出,nextLine返回按下回车键前输入的所有字符,包括空格;next则返回过滤掉空格后的字符串。