Java Character forDigit 方法

JavaJavaBeginner
立即练习

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

介绍

在本实验中,你将学习 Java Character 类中的 forDigit() 方法。该方法根据指定的基数(radix)返回指定数字的字符表示。

创建 Java 文件

~/project 目录下使用以下命令创建一个名为 CharForDigit.java 的 Java 文件:

touch ~/project/CharForDigit.java

添加初始代码

将以下代码添加到 CharForDigit.java 文件中:

public class CharForDigit {
    public static void main(String[] args) {
        int n1 = 8;
        int n2 = 23;
        int n3 = 30;
        char ch1 = Character.forDigit(n1, 9);
        char ch2 = Character.forDigit(n2, 25);
        char ch3 = Character.forDigit(n3, 36);
        System.out.println("The char representation of " + n1 + " in radix 9 is " + ch1);
        System.out.println("The char representation of " + n2 + " in radix 25 is " + ch2);
        System.out.println("The char representation of " + n3 + " in radix 36 is " + ch3);
    }
}

这段代码创建了一个 CharForDigit 类,其中包含一个 main 方法。main 方法展示了如何使用 forDigit() 方法获取不同基数(radix)下数字的字符表示。

编译并运行代码

使用以下命令编译 CharForDigit.java 文件:

javac CharForDigit.java

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

java CharForDigit

你应该会看到以下输出:

The char representation of 8 in radix 9 is 8
The char representation of 23 in radix 25 is n
The char representation of 30 in radix 36 is u

此输出确认 forDigit() 方法按预期工作。

添加用户输入

现在,让我们修改代码以接受用户输入的数字和基数。在初始代码后添加以下代码:

Scanner sc = new Scanner(System.in);
System.out.print("Enter digit: ");
int d = sc.nextInt();
System.out.print("Enter radix: ");
int r = sc.nextInt();
char result = Character.forDigit(d, r);
System.out.println("The character at radix \'" + r + "\' for the digit " + d + " is: " + result);

这段代码会提示用户输入数字和基数,从控制台读取输入,并使用 forDigit() 方法获取数字的字符表示。

编译并运行支持用户输入的代码

使用以下命令编译修改后的 CharForDigit.java 文件:

javac CharForDigit.java

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

java CharForDigit

你应该会在控制台中看到以下提示:

Enter digit:

输入一个数字(例如 12)并按 Enter 键。你应该会看到以下提示:

Enter radix:

输入一个基数(例如 16)并按 Enter 键。然后你应该会看到以下输出:

The character at radix '16' for the digit 12 is: c

此输出确认修改后的代码按预期工作。

测试无效输入

修改代码以处理无效的用户输入。在用户输入代码后添加以下代码:

} catch (InputMismatchException e) {
    System.out.println("Invalid input!");
}

这段代码会捕获 Scanner 类在用户输入无法解析为整数时抛出的 InputMismatchException 异常。

编译并运行修改后的代码

使用以下命令编译修改后的 CharForDigit.java 文件:

javac CharForDigit.java

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

java CharForDigit

你应该会在控制台中看到以下提示:

Enter digit:

输入一个非数字的输入(例如 "abc")并按 Enter 键。你应该会看到以下输出:

Invalid input!

此输出确认代码按预期处理了无效输入。

测试无效基数

修改代码以检查输入的基数是否有效。在用户输入代码后添加以下代码:

if (r < Character.MIN_RADIX || r > Character.MAX_RADIX) {
    System.out.println("Invalid radix!");
    return;
}

这段代码会检查输入的基数是否小于最小基数或大于最大基数。如果是,则打印一条消息并终止程序。

编译并运行修改后的代码

使用以下命令编译修改后的 CharForDigit.java 文件:

javac CharForDigit.java

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

java CharForDigit

你应该会在控制台中看到以下提示:

Enter digit:

输入一个数字(例如 6)并按 Enter 键。你应该会看到以下提示:

Enter radix:

输入一个小于 2 或大于 36 的基数(例如 1100)并按 Enter 键。你应该会看到以下输出:

Invalid radix!

此输出确认代码按预期处理了无效基数。

总结

在本实验中,你学习了如何使用 Character 类的 forDigit() 方法来获取指定基数下数字的字符表示。你还学习了如何处理用户输入并检查输入的有效性。