欢迎访问宙启技术站
智能推送

如何使用Java的Scanner类从控制台读取用户输入的数据,以及如何处理输入异常。

发布时间:2023-06-25 08:47:10

Java中的Scanner类可以用于从控制台读取用户输入的数据。通过Scanner类,我们可以获取用户输入数据的类型,例如字符串、整数、浮点数等。Scanner类提供了多种方法来从控制台读取用户输入数据,如:nextLine()、nextInt()、nextDouble()等。以下我们将详细介绍Scanner类的使用方法及异常处理方法。

1. 创建Scanner对象

在使用Scanner类读取用户输入数据之前,我们需要先创建Scanner对象。Scanner类的构造函数需要传入一个输入流对象(InputStream、File对象等)或者一个字符串对象。在本文中,我们将使用System.in作为输入流对象创建Scanner对象,因为System.in表示标准输入流,即用户在控制台输入的数据。

下面是创建Scanner对象的代码:

Scanner scanner = new Scanner(System.in);

2. 读取用户输入数据

可以使用Scanner对象的方法读取用户输入的数据。Scanner类的主要方法有:

- nextLine():读取用户输入的一整行字符串(包括换行符)。

- next():读取用户输入的下一个单词(以空格分隔)。

- nextInt():读取用户输入的一个整数。

- nextDouble():读取用户输入的一个浮点数。

以下我们将以nextLine()方法为例展示如何从控制台读取用户输入的一整行字符串:

Scanner scanner = new Scanner(System.in);

System.out.println("请输入一行字符串:");

String inputString = scanner.nextLine();

System.out.println("用户输入的字符串为:" + inputString);

3. 异常处理

用户可能会输入不符合要求的数据,例如输入不是整数的字符串。如果我们使用nextInt()方法读取整数时,用户输入的不是整数,那么程序就会抛出InputMismatchException异常。为了防止程序因异常而终止,我们可以使用try-catch语句捕获异常,处理输入异常。以下是处理输入整数异常的代码示例:

Scanner scanner = new Scanner(System.in);

try {

    System.out.println("请输入一个整数:");

    int inputInt = scanner.nextInt();

    System.out.println("用户输入的整数为:" + inputInt);

} catch (InputMismatchException e) {

    System.out.println("输入的不是整数!");

}

如果用户输入的是一个非整数的字符串,程序将会捕获并输出“输入的不是整数!”。

除了上述的InputMismatchException异常,Scanner类还可能会抛出NoSuchElementException和IllegalStateException异常。NoSuchElementException表示没有读取到数据,例如Scanner对象已经读取到文件末尾,在调用next方法时抛出异常。IllegalStateException表示Scanner对象的状态不正确,例如Scanner对象已经关闭,在调用它的方法时抛出异常。

对于这些异常,我们也可以使用try-catch语句进行处理。以下是捕获异常的完整代码示例:

Scanner scanner = new Scanner(System.in);

try {

    System.out.println("请输入一个整数:");

    int inputInt = scanner.nextInt();

    System.out.println("用户输入的整数为:" + inputInt);

} catch (InputMismatchException e) {

    System.out.println("输入的不是整数!");

} catch (NoSuchElementException e) {

    System.out.println("没有读取到数据!");

} catch (IllegalStateException e) {

    System.out.println("Scanner对象的状态不正确!");

} finally {

    scanner.close(); //一定要关闭Scanner对象

}

在以上代码中,我们使用了finally块来关闭Scanner对象。这是因为在使用Scanner类读取文件时,如果不关闭Scanner对象,会导致内存泄漏和文件句柄泄漏,因此要及时关闭Scanner对象。

总结

本文介绍了如何使用Java的Scanner类从控制台读取用户输入的数据。Scanner类提供了多种读取数据的方法,包括nextLine()、nextInt()、nextDouble()等。用户可能会输入不符合要求的数据,因此我们需要使用try-catch语句进行异常处理。常见的异常包括InputMismatchException、NoSuchElementException和IllegalStateException。最后,我们应该及时关闭Scanner对象。