Java 中获取输入的几种方法

10 Sept 2024 | 5 分钟阅读

在 Java 中,有多种方法可以从用户那里获取输入。方法的选择取决于您要接收的输入类型。以下是一些常用的 Java 输入方法:

  • 使用 Java Scanner 类

Scanner 类是一种获取用户输入的通用方法。它属于 `java.util` 包,并提供读取不同类型输入的方法,例如整数、浮点数、字符串等。以下是使用 Scanner 读取用户输入的整数的示例:

InputExample.java

输出

Enter integer: 42
You entered: 42
  • 使用 Java BufferedReader 类

BufferedReader 类(可在 `java.io` 包中找到)与 Scanner 相比,提供了更高效的输入读取,尤其适用于读取字符串。它可以与 InputStreamReader 和 System.in 结合使用来读取用户输入。以下是使用 BufferedReader 读取一行文本的示例:

InputExample.java

输出

Enter a line of text: Hello, World!
You entered: Hello, World!
  • 使用 Java 命令行参数

Java 允许您在程序执行期间将命令行参数传递给您的程序。这些参数可以通过 `main` 方法中的 `args` 参数进行访问。当您想在运行程序之前提供输入时,命令行参数非常有用。以下是一个示例:

InputExample.java

输出

You entered: Hello

如果未提供命令行参数,程序将显示消息“未提供输入”。例如,如果作业在没有参数的情况下执行,结果将是。例如,生产。如果作业在没有参数的情况下执行,结果将是

No input was provided.
  • 使用 Java DataInputStream 类

DataInputStream 类(属于 `java.io` 包)允许您从输入流中读取不同类型的数据。它提供了 `readInt()`、`readDouble()`、`readLine()` 等方法来读取特定数据类型。以下是使用 DataInputStream 读取整数的示例:

InputExample.java

输出

Enter an integer:
You entered:
  • 使用 Java Console 类

Console 类(Java 6 及更高版本可用)提供了从控制台读取输入的方法。它特别适用于简单的文本输入/输出交互。以下是使用 Console 类读取一行文本的示例:

InputExample.java

输出

Enter a line of text: Hello, World!
You entered: Hello, World!

您提供的程序尝试使用 `System.console()` 从控制台读取输入。程序的输出将取决于程序是否在支持控制台输入的环境中运行。当程序在控制台模式下运行时(直接从命令行执行程序),它将显示一行文本。用户将输入文本并按 Enter 键,然后打印“您输入的:”后跟输入的文本。

  • 从文件读取

除了从用户那里读取输入外,Java 还允许您从文件中读取输入。您可以使用 `java.io` 包中的各种类,例如 `FileInputStream`、`BufferedReader` 或 `Scanner`,从文本文件或其他文件格式中读取输入。以下是使用 BufferedReader 从文本文件中读取行的示例:

InputExample.java

输出

Line: Hello
Line: World
Line: Goodbye

您提供的程序使用 BufferedReader 和 FileReader 从名为“input.txt”的文件中读取文本行。然后,它会打印每一行文本,并带有前缀“Line: ”。

程序将读取文件中的每一行,并在其前面加上“Line: ”前缀,直到文件中没有更多行为止。

  • 使用控制台输入重定向

Java 支持控制台输入重定向,这允许您从文件或其他源读取输入,而不是直接从控制台读取。这对于测试或处理大量输入数据非常有用。以下是一个使用文件进行输入重定向运行 Java 程序的示例:

InputExample.java

输出

Input: Hello
Input: World
Input: Goodbye

程序从用户那里读取输入,直到没有更多可用输入为止。它将不断提示用户输入,并打印每个输入行,前缀为“Input: ”。

程序将继续接受输入行,直到用户终止输入流(例如,在类 Unix 系统上按 Ctrl + D,或在 Windows 上按 Ctrl + Z)。一旦输入流关闭,程序将退出循环并终止。

  • 从网络套接字读取输入

除了从控制台或文件读取输入外,Java 还允许您从网络套接字读取输入。这在开发客户端-服务器应用程序或与远程系统通信时非常有用。通过使用 Socket 和 InputStream 等类,我们可以建立网络连接并从中读取数据。

InputExample.java

输出

Data Retrieved: Hello, client!

它将收到的数据作为字符串显示。但是,在不知道服务器实现及其响应的情况下,无法提供准确的输出。结果将根据服务器的行为及其返回的数据而异。如果我们运行该程序并成功建立连接,它将从输入流中读取数据并将其打印为输出。

如果在套接字连接期间或从输入流读取时发生异常,程序将打印一个堆栈跟踪,显示异常,使用 `e.printStackTrace()`。这提供了有关异常情况的附加信息。