如何在 Java 中使用 Scanner 读取长整数输入

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本教程中,我们将探讨使用Java Scanner类读取长整数输入的过程。我们将介绍确保准确可靠的数据输入的基本步骤和技术,以及如何处理在此过程中可能出现的常见数字输入异常。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/ObjectOrientedandAdvancedConceptsGroup -.-> java/user_input("User Input") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/wrapper_classes("Wrapper Classes") subgraph Lab Skills java/user_input -.-> lab-417653{{"如何在 Java 中使用 Scanner 读取长整数输入"}} java/exceptions -.-> lab-417653{{"如何在 Java 中使用 Scanner 读取长整数输入"}} java/wrapper_classes -.-> lab-417653{{"如何在 Java 中使用 Scanner 读取长整数输入"}} end

Java Scanner 简介

在 Java 中,Scanner 类是一个强大的工具,用于从各种来源读取输入,包括控制台、文件和网络连接。它提供了一种简单而高效的方式来解析和解释不同类型的输入数据,包括整数、浮点数、字符串等等。

Scanner 类是 java.util 包的一部分,可以使用以下语句导入:

import java.util.Scanner;

要创建一个 Scanner 对象并使用它来读取输入,可以按照以下步骤进行:

  1. 创建一个新的 Scanner 对象,并将输入源作为参数传递:

    Scanner scanner = new Scanner(System.in);

    在这个例子中,我们创建了一个从控制台(标准输入)读取输入的 Scanner 对象。

  2. 使用 Scanner 类提供的适当方法来读取不同类型的输入。例如,要读取一个整数,可以使用 nextInt() 方法:

    int number = scanner.nextInt();

    Scanner 类还提供了各种其他方法,如 nextDouble()nextLine()nextBoolean() 等等,用于读取不同的数据类型。

  3. 使用完 Scanner 对象后,记得关闭它以释放系统资源:

    scanner.close();

通过使用 Scanner 类,你可以在 Java 应用程序中轻松读取和处理用户输入,使它们更具交互性和用户友好性。

使用 Scanner 读取长整数

虽然 Scanner 类的 nextInt() 方法适用于读取标准大小的整数,但它可能无法处理非常大的整数值,例如那些超出 Java 中 int 数据类型范围的值。在这种情况下,你可以使用 nextLong() 方法来读取长整数值。

Java 中的 long 数据类型可以存储范围在 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 之间的整数值,这比 int 数据类型的范围(-2,147,483,648 到 2,147,483,647)大得多。

以下是一个如何使用 nextLong() 方法读取长整数输入的示例:

import java.util.Scanner;

public class LongIntegerInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter a long integer: ");
        long longNumber = scanner.nextLong();

        System.out.println("You entered: " + longNumber);

        scanner.close();
    }
}

在这个示例中,我们创建了一个 Scanner 对象,并使用 nextLong() 方法从用户读取长整数输入。然后,该输入被存储在 longNumber 变量中并打印到控制台。

请记住处理读取输入时可能发生的潜在异常,例如如果用户输入非数字值时的 InputMismatchException。我们将在下一节中介绍这一点。

处理数字输入异常

当使用 Scanner 类读取数字输入时,处理可能发生的潜在异常非常重要。一个常见的异常是 InputMismatchException,当用户输入非数字值时会抛出该异常。

要处理这些异常,你可以使用 try-catch 块来捕获异常并提供适当的错误处理。以下是一个示例:

import java.util.InputMismatchException;
import java.util.Scanner;

public class NumericInputException {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        try {
            System.out.print("Enter a long integer: ");
            long longNumber = scanner.nextLong();
            System.out.println("You entered: " + longNumber);
        } catch (InputMismatchException e) {
            System.out.println("Error: Invalid input. Please enter a valid long integer.");
        } finally {
            scanner.close();
        }
    }
}

在这个示例中,我们将 scanner.nextLong() 调用包装在一个 try 块中。如果用户输入非数字值,InputMismatchException 将被捕获,我们会打印一条错误消息。最后,我们在 finally 块中关闭 Scanner 对象,以确保系统资源得到正确释放。

通过处理异常,你可以使你的 Java 应用程序更健壮,并通过优雅地处理意外输入来提供更好的用户体验。

此外,你可以使用循环来反复提示用户输入,直到输入有效的长整数为止。以下是一个示例:

import java.util.InputMismatchException;
import java.util.Scanner;

public class NumericInputException {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long longNumber;
        boolean validInput = false;

        while (!validInput) {
            try {
                System.out.print("Enter a long integer: ");
                longNumber = scanner.nextLong();
                validInput = true;
                System.out.println("You entered: " + longNumber);
            } catch (InputMismatchException e) {
                System.out.println("Error: Invalid input. Please enter a valid long integer.");
                scanner.nextLine(); // 清除输入缓冲区
            }
        }

        scanner.close();
    }
}

在这个示例中,我们使用一个 while 循环来反复提示用户输入,直到输入有效的长整数为止。在捕获到 InputMismatchException 后,调用 scanner.nextLine() 来清除输入缓冲区,以便用户可以输入新的值。

通过处理异常并提供强大的输入验证过程,你可以确保你的 Java 应用程序能够优雅地处理各种用户输入,并提供更好的整体用户体验。

总结

在本教程结束时,你将对如何使用 Java Scanner 类读取长整数输入有深入的理解,并且能够处理可能出现的任何数字输入异常。这些知识在你的 Java 编程之旅中将非常宝贵,使你能够构建健壮且用户友好的应用程序。