Scanner
类是 Java 中用于获取用户输入的一个非常有用的工具,它位于 java.util
包中。它可以从各种输入源读取数据,包括键盘输入、文件、字符串等。下面是对 Scanner
类的详细介绍。
创建 Scanner
对象
要使用 Scanner
类,首先需要创建一个 Scanner
对象。以下是几种常用的创建方式:
从标准输入(键盘)读取:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个整数:"); int number = scanner.nextInt(); System.out.println("你输入的整数是:" + number); scanner.close(); // 关闭 Scanner 以释放资源 } }
从字符串读取:
String input = "Hello World"; Scanner scanner = new Scanner(input); while (scanner.hasNext()) { System.out.println(scanner.next()); } scanner.close();
从文件读取:
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class FileReadExample { public static void main(String[] args) { try { File file = new File("example.txt"); Scanner scanner = new Scanner(file); while (scanner.hasNextLine()) { String line = scanner.nextLine(); System.out.println(line); } scanner.close(); } catch (FileNotFoundException e) { System.out.println("文件未找到"); } } }
常用方法
hasNext()
:如果输入中还有一个完整的可用输入,则返回true
。next()
:获取下一个完整的单词(以空格为分隔)。nextLine()
:获取下一行的输入。nextInt()
:获取下一个整数。nextDouble()
:获取下一个双精度浮点数。nextBoolean()
:获取下一个布尔值。nextFloat()
:获取下一个单精度浮点数。nextLong()
:获取下一个长整型数。
输入验证
Scanner
类还可以用于输入验证。例如,你可以不断提示用户输入,直到获得有效输入。
import java.util.Scanner;
public class InputValidation {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = 0;
boolean validInput = false;
while (!validInput) {
System.out.print("请输入一个整数:");
if (scanner.hasNextInt()) {
number = scanner.nextInt();
validInput = true;
} else {
System.out.println("输入无效,请重新输入一个整数。");
scanner.next(); // 清除无效输入
}
}
System.out.println("你输入的整数是:" + number);
scanner.close();
}
}
注意事项
- 关闭 Scanner:使用完
Scanner
后,建议调用scanner.close()
方法以释放资源。尤其是在从文件读取数据时。 - 输入类型:确保用户输入的数据类型与所请求的类型相匹配,否则会抛出
InputMismatchException
异常。 - 字符编码:在处理文件或不同输入源时,请注意字符编码问题,以避免读取错误。
小结
Scanner
类是一个非常实用的工具,可以简化用户输入和数据读取的过程。通过掌握其各种方法以及适用场景,可以有效提高应用程序的数据处理能力。