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

如何使用Java中的Scanner函数从控制台读取输入值?

发布时间:2023-05-26 16:24:17

Scanner 是 Java 标准包中的一个类,它提供了一种方便的方法来从标准输入或其他 InputStream 中读取输入值。使用 Scanner 类可以在 Java 中方便地从键盘或文件中读取输入值,并进行处理。本文将介绍如何使用 Scanner 类读取控制台输入值,包括使用不同的数据类型和处理异常情况。

一、Scanner 类的基本使用

在使用 Scanner 之前,需要先创建一个 Scanner 实例,来指定输入的来源。下面是一个简单的例子,演示了如何从控制台读取一个字符串:

import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个字符串:");
        String str = scanner.nextLine();
        System.out.println("你输入的字符串是:" + str);
    }
}

在上面的示例中,首先创建一个 Scanner 实例并将其指定为标准输入流 System.in。然后,使用 nextLine() 方法读取输入的字符串,并打印在控制台上。

若要使用 Scanner 读取其他类型的输入,只需调用相应的方法即可。下面是一些常用的 Scanner 方法:

1. nextLine():读取输入的一行字符串

2. next():读取输入的一个单词(以空格作为分隔符)

3. nextInt():读取输入的一个整数

4. nextDouble():读取输入的一个双精度浮点数

5. nextBoolean():读取输入的一个布尔值

例如,下面的示例演示了如何从控制台读取整数和浮点数:

public class ScannerExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        int num = scanner.nextInt();
        System.out.println("你输入的整数是:" + num);
        System.out.print("请输入一个浮点数:");
        double d = scanner.nextDouble();
        System.out.println("你输入的浮点数是:" + d);
    }
}

二、Scanner 的异常处理

Scanner 可以读取多种类型的数据,但如果输入的数据类型和调用方法所要求的类型不符,就会抛出 InputMismatchException 异常。例如,在下面的示例中,当输入的字符串无法转换为整数时,就会抛出 InputMismatchException 异常:

public class ScannerExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        try {
            int num = scanner.nextInt();
            System.out.println("你输入的整数是:" + num);
        } catch (InputMismatchException e) {
            System.out.println("请输入正确的整数!");
        }
    }
}

为了避免抛出异常,可以使用 hasNext() 方法判断是否还有下一个输入项,或使用 hasNextLine() 方法判断输入是否还有下一行。例如,下面的示例演示了如何判断输入是否为有效的整数:

public class ScannerExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        if (scanner.hasNextInt()) {
            int num = scanner.nextInt();
            System.out.println("你输入的整数是:" + num);
        } else {
            System.out.println("请输入正确的整数!");
        }
    }
}

三、Scanner 的关闭和清除

在使用完 Scanner 后,需要调用 close() 方法来关闭 InputStream。如果没有正确关闭 InputStream,在某些情况下可能会导致内存泄漏或资源占用过多的问题。例如,下面的示例演示了如何关闭 Scanner:

public class ScannerExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.print("请输入一个整数:");
            int num = scanner.nextInt();
            System.out.println("你输入的整数是:" + num);
        } catch (InputMismatchException e) {
            System.out.println("请输入正确的整数!");
        } finally {
            scanner.close();
        }
    }
}

此外,Scanner 还提供了一个 reset() 方法,可以清除 Scanner 的状态。例如,如果在读取输入时发生异常,在重新读取输入之前可以调用 reset() 方法来清除状态。下面的示例演示了如何使用 reset() 方法:

public class ScannerExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = 0;
        while (num == 0) {
            try {
                System.out.print("请输入一个整数:");
                num = scanner.nextInt();
            } catch (InputMismatchException e) {
                System.out.println("请输入正确的整数!");
                scanner.reset();
                scanner.next();
            }
        }
        System.out.println("你输入的整数是:" + num);
        scanner.close();
    }
}

在上面的示例中,如果输入的不是整数,则清除 Scanner 的状态并调用 next() 方法来读取屏幕上剩余的输入值。这样就可以重新读取输入值。如果输入了正确的整数,则跳出循环并打印出输入值。

总结

在 Java 中,Scanner 是一种方便的方法来从标准输入或其他 InputStream 中读取输入值。使用 Scanner 类,我们可以方便地从键盘或文件中读取输入值,并进行处理。为了使用 Scanner 类,需要先创建一个 Scanner 实例,并将其指定为输入流。然后,使用相应的方法来读取不同类型的输入值。在读取输入时,需要注意处理异常情况和关闭输入流。