scanner 是 java 中的一个常用类,用来读取控制台或文件中的输入数据。它提供了一种简单的方式来解析基本类型和字符串,并支持对正则表达式进行匹配。
Scanner 类位于 java.util 包中,因此在编写程序时需要 import 该包。在开始使用 Scanner 之前,我们需要创建一个 Scanner 对象来访问输入源。
创建 Scanner 对象的语法为:
Scanner scanner = new Scanner(System.in);
上面的代码创建了一个 Scanner 对象,可以使用它来读取标准输入流中的数据。除此之外,我们还可以使用其他的输入流来创建 Scanner 对象。
下面我们来看一些常用的 Scanner 操作。
立即学习“Java免费学习笔记(深入)”;
- 读取字符串
我们可以使用 next() 方法来读取一个字符串,它会读取控制台输入中的下一个单词,并返回一个字符串。
Scanner scanner = new Scanner(System.in);System.out.print("请输入一个字符串:");String str = scanner.next();System.out.println("你输入的字符串是:" + str);
上面的代码运行结果:
请输入一个字符串:Hello World!你输入的字符串是:Hello
上述代码只读取了输入中的第一个单词"Hello",因为 next() 方法默认会使用空格分隔输入的字符串,所以它只会读取输入中的第一个单词。如果需要读取整个字符串,可以使用 nextLine() 方法。
- 读取整数
我们可以使用 nextInt() 或 nextLong() 来读取一个整数或长整数,如果输入的不是数值类型,会抛出 InputMismatchException 异常。
Scanner scanner = new Scanner(System.in);System.out.print("请输入一个整数:");int num = scanner.nextInt();System.out.println("你输入的整数是:" + num);
上面的代码运行结果:
请输入一个整数:123你输入的整数是:123
- 读取浮点型数据
我们可以使用 nextFloat() 或 nextDouble() 来读取一个浮点型数据。如果输入的不是浮点型数据,会抛出 InputMismatchException 异常。
Scanner scanner = new Scanner(System.in);System.out.print("请输入一个浮点数:");float f = scanner.nextFloat();System.out.println("你输入的浮点数是:" + f);
上面的代码运行结果:
请输入一个浮点数:3.14你输入的浮点数是:3.14
- 读取布尔类型数据
我们可以使用 nextBoolean() 方法来读取一个布尔类型数据,如果输入的值不是 true 或 false,会抛出 InputMismatchException 异常。
Scanner scanner = new Scanner(System.in);System.out.print("请输入一个布尔值(true/false):");boolean b = scanner.nextBoolean();System.out.println("你输入的布尔值是:" + b);
上面的代码运行结果:
请输入一个布尔值(true/false):true你输入的布尔值是:true
- 读取正则表达式
Scanner 还提供了一个 findInLine() 方法来读取正则表达式。该方法可以读取控制台输入中第一次出现的正则表达式,并返回一个匹配的字符串。
Scanner scanner = new Scanner(System.in);System.out.print("请输入一个正则表达式:");String pattern = scanner.findInLine("\d+");System.out.println("你输入的正则表达式匹配的字符串是:" + pattern);
上面的代码运行结果:
请输入一个正则表达式:Hello 123 World!你输入的正则表达式匹配的字符串是:123