介绍
在本实验中,我们将学习如何使用 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)以及在终端中运行代码。



