您的位置:

使用Java Scanner实现输入操作

在Java开发中,我们常常需要接受用户的输入,以此来处理各种业务场景。而Scanner是一种很常用的实现输入操作的工具。本文将从多个方面介绍如何使用Java Scanner实现输入操作。

一、Scanner概述

Scanner是一个便捷的类,可以用于读取用户的输入,同时还可以进行各种数据类型的转换,例如字符串、数字、布尔值等。在使用Scanner时,我们需要导入 java.util.Scanner 包。

Scanner的常用方法有:

Scanner sc = new Scanner(System.in);
String str = sc.nextLine(); // 读取字符串
int i = sc.nextInt(); // 读取整型
double d = sc.nextDouble(); // 读取双精度浮点型
boolean b = sc.nextBoolean(); // 读取布尔型

通过这些方法,我们可以轻松实现用户输入的获取和处理。

二、读取字符串

使用Scanner读取字符串非常简单,可以使用 next() 或 nextLine() 方法来获取。next() 方法只能获取下一个以空格分隔的单词,而 nextLine() 方法则可以获取整行字符串。

Scanner sc = new Scanner(System.in);
String str1 = sc.next(); // 读取一个单词
String str2 = sc.nextLine(); // 读取一行字符串

需要注意的是,如果在读取完其他数据类型后再读取字符串时,需要先调用一次 nextLine(),否则会出现异常。

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
sc.nextLine(); // 读取多余的回车符
String str = sc.nextLine();

三、读取数值类型

Scanner同样可以读取各种数值类型,例如整数、浮点数等。读取整数可以使用 nextInt() 方法,读取其他数值类型时同理。

Scanner sc = new Scanner(System.in);
int i = sc.nextInt(); // 读取一个整数
double d = sc.nextDouble(); // 读取一个双精度浮点数

需要注意的是,如果Scanner读取到的不是数值类型,而我们却使用了相应的方法来读取,会出现 InputMismatchException 异常。此时需要使用 hasNextInt() 等方法进行判断,以避免程序崩溃。

Scanner sc = new Scanner(System.in);
if (sc.hasNextInt()) {
    int i = sc.nextInt();
} else {
    System.out.println("请输入整数!");
}

四、读取布尔类型

当我们需要读取一个布尔类型时,可以使用 nextBoolean() 方法。

Scanner sc = new Scanner(System.in);
boolean b = sc.nextBoolean();

需要注意的是,当输入错误时,会出现 NoSuchElementException 异常。此时可以使用 hasNextBoolean() 方法进行判断。

Scanner sc = new Scanner(System.in);
if (sc.hasNextBoolean()) {
    boolean b = sc.nextBoolean();
} else {
    System.out.println("请输入 true 或 false!");
}

五、Scanner关闭

在使用完Scanner后,我们需要手动关闭它。如果不关闭,可能会造成内存泄漏和资源浪费等问题。

Scanner sc = new Scanner(System.in);
// 读取数据
sc.close(); // 关闭Scanner

六、总结

Scanner是一种常用的Java工具类,可以方便地实现用户输入的获取和处理。通过本文的介绍,读者可以了解到Scanner的基本用法,并可以灵活运用到各种业务场景中。