Java Scanner 类
Scanner 类是 Java 中用于获取用户输入的常用工具类,它位于 java.util 包中。Scanner 可以读取各种类型的输入,包括从键盘、文件、字符串等源获取数据。它提供了多种方法来读取基本数据类型(如 int、double 等)和字符串。
1. Scanner 类的基本使用
1.1 创建 Scanner 对象
要使用 Scanner,首先需要创建一个 Scanner 对象,并将其与输入源(如 System.in,即键盘输入)关联起来。
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
// 创建 Scanner 对象,读取键盘输入
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数:");
int number = scanner.nextInt(); // 读取整数
System.out.println("你输入的整数是:" + number);
System.out.print("请输入一个浮点数:");
double floatingNumber = scanner.nextDouble(); // 读取浮点数
System.out.println("你输入的浮点数是:" + floatingNumber);
System.out.print("请输入一段文字:");
String text = scanner.next(); // 读取字符串(以空格为分隔符)
System.out.println("你输入的字符串是:" + text);
// 关闭 scanner 对象,释放资源
scanner.close();
}
}
2. Scanner 常用方法
Scanner 提供了多种方法来获取不同类型的输入数据。以下是一些常用的方法:
2.1 nextInt()
读取下一个整数。
int num = scanner.nextInt();
2.2 nextDouble()
读取下一个浮点数。
double num = scanner.nextDouble();
2.3 nextLine()
读取一行字符串,直到遇到换行符为止。
String line = scanner.nextLine();
2.4 next()
读取一个完整的单词(以空格或换行符为分隔符)。
String word = scanner.next();
2.5 nextBoolean()
读取一个布尔值。
boolean flag = scanner.nextBoolean();
2.6 hasNext() 和 hasNextInt()
检查是否还有下一个元素,常用于循环中。
hasNext():检查是否有下一个元素(可以是任何类型)。hasNextInt():检查下一个元素是否为整数。
if (scanner.hasNextInt()) {
int num = scanner.nextInt();
System.out.println("输入的是整数:" + num);
}
2.7 close()
关闭 Scanner 对象,释放资源。注意,关闭 System.in 会关闭整个输入流,所以通常不推荐关闭 System.in,除非应用结束。
scanner.close();
3. 使用 Scanner 读取多行输入
Scanner 可以读取多行输入,方法是使用 nextLine() 来读取每一行。例如,读取用户输入的多行文本,直到输入 “exit” 为止。
import java.util.Scanner;
public class MultiLineInput {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line;
System.out.println("请输入多行文本,输入 'exit' 来结束:");
while (true) {
line = scanner.nextLine();
if (line.equalsIgnoreCase("exit")) {
break;
}
System.out.println("你输入的行是:" + line);
}
scanner.close();
}
}
4. 使用 Scanner 读取文件
Scanner 也可以用来读取文件中的内容。你可以通过传入一个文件对象或文件路径来创建 Scanner 对象,然后读取文件的内容。
import java.util.Scanner;
import java.io.File;
import java.io.IOException;
public class FileScannerExample {
public static void main(String[] args) throws IOException {
// 创建 File 对象
File file = new File("example.txt");
// 创建 Scanner 对象读取文件内容
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
// 关闭 scanner 对象
scanner.close();
}
}
5. 示例:综合使用 Scanner
import java.util.Scanner;
public class ScannerComprehensiveExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入姓名
System.out.print("请输入姓名:");
String name = scanner.nextLine();
// 输入年龄
System.out.print("请输入年龄:");
int age = scanner.nextInt();
// 输入薪水
System.out.print("请输入薪水:");
double salary = scanner.nextDouble();
// 输出输入的信息
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
System.out.println("薪水:" + salary);
scanner.close();
}
}
6. Scanner 注意事项
next()只读取一个单词,遇到空格、换行符等分隔符时会停止。nextLine()读取整个一行,直到遇到换行符为止。- 在读取
nextInt()或nextDouble()后,通常会剩下一个换行符,如果你后续使用nextLine(),可能会遇到读取不到预期数据的问题。解决方法是调用一次nextLine()来消耗掉换行符。
Scanner scanner = new Scanner(System.in);
System.out.print("请输入整数:");
int number = scanner.nextInt();
// 解决换行符问题
scanner.nextLine(); // 消耗掉之前输入的换行符
System.out.print("请输入一行文本:");
String text = scanner.nextLine();
System.out.println("你输入的文本是:" + text);
scanner.close();
总结
Scanner类是一个非常强大且灵活的输入工具,可以读取各种类型的数据,如整数、浮点数、布尔值和字符串。- 它可以从标准输入(键盘)、文件或其他输入源中读取数据。
- 使用
Scanner时需要记得关闭它以释放资源,但在读取System.in时通常不建议关闭。
通过这些基本操作,您可以轻松实现用户输入、文件读取等功能。更多详细内容请关注其他相关文章!