解析无符号整数

JavaJavaBeginner
立即练习

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

介绍

在本实验中,我们将学习如何使用 Java 中的 parseUnsignedInt() 方法将字符串值解析为无符号十进制整数。我们将详细介绍该方法的语法、参数和返回类型,并通过一些示例来学习如何使用它。

创建一个新的 Java 文件

首先,我们需要在 ~/project 目录下创建一个新的 Java 文件。可以通过打开终端并输入以下命令来完成:

touch ~/project/UnsignedIntegerParser.java

这将打开一个空白的 Nano 编辑器窗口。

导入 Integer 类

我们需要导入 java.lang 包中的 Integer 类,因为它包含了 parseUnsignedInt() 方法。可以通过在文件中添加以下代码来实现:

import java.lang.Integer;

从字符串值解析无符号整数

现在,让我们学习如何使用 parseUnsignedInt() 方法。我们可以对一个字符串值调用此方法,它将返回其等效的无符号十进制整数对象。以下是一个示例:

String s = "123";
int n = Integer.parseUnsignedInt(s); // 将传递的字符串转换为无符号整数
System.out.println(n);

这段代码的输出将是 123

处理无效输入

如果我们向 parseUnsignedInt() 方法提供无效输入,它将抛出 NumberFormatException。我们可以使用 try-catch 块来处理此异常。以下是一个示例:

try {
  String s = "-123";
  int n = Integer.parseUnsignedInt(s); // 将传递的字符串转换为无符号整数
  System.out.println(n);
} catch(NumberFormatException ex) {
  System.out.println("Invalid input.");
}

在这段代码中,我们尝试解析一个负整数,这是无效的。parseUnsignedInt() 方法将抛出 NumberFormatException,该异常会被 catch 块捕获。这段代码的输出将是 Invalid input.

从控制台读取输入

我们也可以从控制台读取输入并将其解析为无符号整数。以下是一个示例:

Scanner scanner = new Scanner(System.in);
System.out.print("Enter a positive integer: ");
String s = scanner.nextLine();
try {
  int n = Integer.parseUnsignedInt(s); // 将传递的字符串转换为无符号整数
  System.out.println(n);
} catch(NumberFormatException ex) {
  System.out.println("Invalid input.");
}

在这段代码中,我们使用 Scanner 类从控制台读取输入。然后,我们使用 parseUnsignedInt() 方法将输入字符串解析为无符号整数。最后,我们捕获解析输入时可能发生的任何异常。

要在终端中运行此代码,我们需要先使用以下命令编译它:

javac UnsignedIntegerParser.java

然后,可以使用以下命令运行它:

java UnsignedIntegerParser

从字符串列表中解析无符号整数

我们也可以从字符串列表中解析无符号整数。以下是一个示例:

List<String> stringList = Arrays.asList("123", "456", "789");
for (String s : stringList) {
  try {
    int n = Integer.parseUnsignedInt(s); // 将传递的字符串转换为无符号整数
    System.out.println(n);
  } catch(NumberFormatException ex) {
    System.out.println("Invalid input: " + s);
  }
}

在这段代码中,我们遍历一个字符串列表,并使用 parseUnsignedInt() 方法将每个字符串解析为无符号整数。如果字符串不是有效的无符号整数,我们会捕获异常并打印错误信息。

使用辅助函数

为了避免每次解析无符号整数时重复相同的 try-catch 块,我们可以创建一个辅助函数,该函数接受一个字符串作为输入并返回一个无符号整数。以下是一个示例:

public static int parseUnsignedInt(String s) {
  try {
    return Integer.parseUnsignedInt(s); // 将传递的字符串转换为无符号整数
  } catch(NumberFormatException ex) {
    return -1; // 对于无效输入返回 -1
  }
}

在这段代码中,我们定义了一个 parseUnsignedInt() 函数,该函数接受一个字符串作为输入并返回一个无符号整数。如果输入不是有效的无符号整数,函数将返回 -1。然后,我们可以使用此函数来解析无符号整数,而无需担心异常。以下是使用该函数的示例:

String s = "123";
int n = parseUnsignedInt(s);
System.out.println(n); // 输出: 123

s = "-123";
n = parseUnsignedInt(s);
System.out.println(n); // 输出: -1

处理更大的无符号整数

如果我们需要解析更大的无符号整数,可以使用 UnsignedInteger 类的 parseUnsignedInt() 方法,而不是 Integer 类的方法。该方法返回一个 long 而不是 int。以下是一个示例:

String s = "4294967295"; // 无符号 32 位整数的最大值
long n = Long.parseUnsignedLong(s);
System.out.println(n); // 输出: 4294967295

使用基数(Radix)

如果我们想解析一个表示非十进制数的字符串,可以使用带有额外 radix 参数的 parseInt() 方法。以下是一个示例:

String s = "1101"; // 13 的二进制表示
int n = Integer.parseUnsignedInt(s, 2); // 解析为二进制
System.out.println(n); // 输出: 13

退出 Nano 并运行代码

要退出 Nano,请按 Ctrl+X,然后按 Y 保存文件,最后按 Enter

要在终端中运行代码,可以使用以下命令编译它:

javac UnsignedIntegerParser.java

然后,使用以下命令运行它:

java UnsignedIntegerParser

总结

在本实验中,我们学习了如何使用 Java 中的 parseUnsignedInt() 方法将字符串值解析为无符号十进制整数。我们还学习了如何处理无效输入、从控制台读取输入、从字符串列表中解析无符号整数以及使用辅助函数。此外,我们还学习了如何解析更大的无符号整数、使用基数(radix)以及在终端中运行代码。

您可能感兴趣的其他 Java 教程