一、前言
现在,我们来了解一下 Scanner。
在Java中,我们可以通过使用Scanner类从键盘获取不同类型的变量。Scanner类提供了方便的方法来读取用户输入的数据,我们可以将这些数据存储在适当的变量中。
二、内容
2.1 什么是 Scanner ?
Java Scanner 是 Java Utilities 包中的一个类,它的作用是创建软件与用户之间的双向通信。也就是说,它提供了一种让用户输入信息,以便软件可以利用信息来调整其行为的方式。
几乎所有的软件都需要一定程度的用户交互,因此它需要一种捕获数据的方式,Scanner 类就是做这一点。使用 Scanner 类可以使数据交互过程变得很简单。
在使用 Scanner 类之前,我们需要导包,即导入java.util.Scanner
类,语句如下:
java
import java.util.Scanner;
一旦导入了 Scanner 类,我们就可以在代码中使用它。
2.2 实例化 Scanner
使用 Scanner 类的第一步当然是实例化Scanner
对象,通常使用 System.in
作为输入流。这是获取用户输入的一种标准方法。
实例化Scanner 对象的语句如下:
java
Scanner scan = new Scanner(System.in);
一旦我们实例化了 Scanner 对象,就可以使用各种 next
方法来获取不同数据类型的输入,如 nextLine()
、nextInt()
、nextDouble()
等,具体取决于要获取的数据类型。
2.3 基本的 Scanner 方法
根据我们所需的变量类型,我们可以使用Scanner的不同方法来获取输入的值。
Scanner 类会将输入字符串分割成一个个 "切割单元"(token),默认情况下使用空白或制表符作为分隔符。这使得解析和获取用户输入的各个部分变得非常方便。
next()
next()
方法用于获取下一个 token,并返回一个字符串。
比如:
java
System.out.println("请输入文本:");
Scanner scanner = new Scanner(System.in);
String token = scanner.next();
System.out.println(token);
运行结果:
bash
请输入文本:
Hello World!
Hello
nextInt()、nextDouble()、nextBoolean()
Scanner 还提供了一系列方法,用于读取不同数据类型的 token,例如整数、浮点数、布尔值等。这些方法将 token 转换为相应的数据类型并返回。
比如:
如果我们需要读取一个整数,可以使用nextInt()
方法。
java
System.out.println("请输入你的年龄:");
int age = scan.nextInt();
System.out.println("你的年龄是:" + age);
类似地,要读取一个浮点数,我们可以使用nextDouble()
方法。
java
System.out.println("请输入你的体重:");
double weight = scan.nextDouble();
System.out.println("你的体重是:" + weight);
如果需要读取布尔类型的值(即true
或false
),可以使用nextBoolean()
方法。
java
System.out.println("你热爱学习嘛?(true/false)");
boolean isLove = scan.nextBoolean();
System.out.println("你的答案是:?" + isLove);
nextLine()
nextLine()
方法用于读取整行文本,包括换行符。这通常用于获取用户输入的一整行。例如:
java
Scanner scanner = new Scanner("Hello, World!\nHow are you?");
String line = scanner.nextLine();
System.out.println(line); // 输出 "Hello, World!"
2.4 异常处理
在处理用户输入时,要格外小心,因为用户可以输入不合法的数据。Scanner 类提供了一些异常处理方法,例如 hasNextInt()
, hasNextDouble()
, hasNextLine()
等,这些方法允许你在读取之前检查是否有合法的输入。
hasNext()
系列方法用于回传boolean
值,表示接下来还有没有东西
比如:
java
Scanner scanner = new Scanner(System.in);
if (scanner.hasNextInt()) {
int number = scanner.nextInt();
System.out.println("你输入的整数是:" + number);
} else {
System.out.println("无效的整数输入");
}
小结:
- 使用
hasNextInt()
或hasNextDouble()
方法来检查是否有下一个整数或浮点数,以避免非法输入。- 当使用
nextInt()
或nextDouble()
方法读取输入数据时,可以捕获InputMismatchException
异常来处理非法输入。在编写程序时,务必确保输入的数据类型与所使用的方法相符合。
2.5 关闭 Scanner
最后,当不再需要 Scanner 对象时,应该使用 close()
方法来关闭它以释放资源。
java
Scanner scanner = new Scanner(System.in);
// 使用 scanner 处理输入
// ......
scanner.close(); // 关闭 Scanner
三、总结
总的来说,Scanner类是Java中的一个实用工具,用于读取用户输入和解析文本。它可以从不同来源(如标准输入、文件、字符串等)读取数据,并支持多种数据类型,包括整数、浮点数、字符串等。Scanner类的主要作用是提供一种简单的方式来获取和处理用户输入或文本数据。
通过使用Scanner
类,我们可以轻松地从键盘获取不同类型的变量。首先,导入java.util.Scanner
类,然后实例化Scanner
对象并通过调用相关方法来获取输入的值。同时,要注意数据类型的匹配,以避免异常的出现。通过这种方法,我们可以编写交互性更强的Java
程序,让用户能够输入自己的数据,提高程序的灵活性和用户体验。