Scanner类

与 C 语言不同,Java 从控制台中读取用户输入的值,使用的不是一行可以直接使用的代码,而是由一个叫 Scanner 的类来实现的。Scanner 英文直译就是扫描仪,它的用途就和现实生活的扫描仪一样,可以把数字化信息流转为人类可识别的文字。System.out 表示向控制台中输出内容,System.in 表示从控制台中输入内容,让 Scanner 扫描 System.in 就可以获取用户输入的值了。

使用 Scanner 类首先要导入该类,其语法如下:

import java.util.Scanner;  //导入Scanner类

Scanner 类提供了如表11.13所示的几种常用的方法,通过这些方法可以获取控制台中输入的不同类型的值。

image 2024 03 01 20 18 10 869
Figure 1. 表11.13 Scanner类的几个常用方法

nextLine() 方法扫描的内容是从第一个字符开始到换行符为止,而 next()、nextInt() 等方法扫描的内容是从第一个字符开始到这段完整内容结束。

使用 Scanner 类扫描控制台中的代码如下:

Scanner sc = new Scanner(System.in);

System.in 表示控制台输入流,在创建 Scanner 对象时把 System.in 作为参数,这样创建出的扫描器对象扫描的目标就是用户在控制台中输入的内容,再通过表11.13中列出的方法将用户输入的内容转为 Java 的数据类型,就可以对数据进行加工、显示了。

【例11.15】猜数字游戏(实例位置:资源包\TM\sl\11\15)

创建 ScannerDemo 类,首先在主方法中创建一个随机数,然后创建一个 while 循环不断获取用户输入的数字,让用户输入的数字与随机数比较,给出“大于”或“小于”的提示,直到用户输入的数字与随机数相等才结束循环。

import java.util.Random;
import java.util.Scanner;

public class ScannerDemo {

	public static void main(String[] args) {
		Random r = new Random();// 随机数对象
		int num = r.nextInt(100);// 从1~99取值
		int input = -1;// 记录用户输入的值
		Scanner sc = new Scanner(System.in);// 扫描器扫描控制台输入
		while (true) {
			System.out.println("猜一猜随机数是多少?");
			input = sc.nextInt();// 获取用户输入的一个整数
			if (input > num) {// 如果大于随机数
				System.out.print("你输入的数字大了! ");
			} else if (input < num) {// 如果小于随机数
				System.out.print("你输入的数字小了! ");
			} else if (input == num) {// 如果等于随机数
				break;// 结束循环
			} else {
				System.out.println("您的输入有误! ");
			}
		}
		System.out.println("恭喜你答对了!");
		sc.close();// 关闭扫描器
	}
}

运行结果如图11.2所示。

image 2024 03 01 20 28 43 684
Figure 2. 图11.2 猜数字游戏的运行结果

编程训练(答案位置:资源包\TM\sl\11\编程训练)

【训练7】边长可变的正方形 根据用户输入的数字,输出对应边长的由“*”字符组成的正方形。

【训练8】模拟用户登录 如果用户输入的用户名为mr,输入的密码为123456,则提示登录成功。