java字符串练习 键盘输入一个字符串,长度为小于小于等于9,只能是数字,将内容转换为罗马数字,


下面是一个 Java 程序,可以读取用户输入的字符串,将其转换为罗马数字并打印出来。请注意,此程序假设输入的字符串仅包含数字,否则它可能会引发异常。

import java.util.Scanner;

public class RomanNumeralConverter {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个长度小于等于9的数字字符串:");
        String input = scanner.nextLine();

        if (input.length() > 9) {
            System.out.println("输入的字符串长度太长!");
            return;
        }

        try {
            int num = Integer.parseInt(input);
            if (num <= 0 || num >= 4000) {
                System.out.println("输入的数字必须在1和3999之间!");
                return;
            }
            String romanNumeral = convertToRomanNumeral(num);
            System.out.println(input + " 转换为罗马数字为:" + romanNumeral);
        } catch (NumberFormatException e) {
            System.out.println("输入的字符串不是有效的数字!");
            return;
        }
    }

    public static String convertToRomanNumeral(int num) {
        String[] romanNumerals = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
        int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
        StringBuilder romanNumeral = new StringBuilder();

        for (int i = 0; i < values.length; i++) {
            while (num >= values[i]) {
                num -= values[i];
                romanNumeral.append(romanNumerals[i]);
            }
        }

        return romanNumeral.toString();
    }
}

该程序使用 Scanner 类从用户读取输入的字符串。它首先检查输入的字符串长度是否小于等于 9,并确保输入的字符串是有效的数字。然后,它调用 convertToRomanNumeral 方法将数字转换为罗马数字。该方法采用两个数组,一个包含罗马数字,另一个包含对应的数字值。然后它使用一个循环来构建罗马数字字符串,直到输入的数字被完全转换为罗马数字为止。最后,该程序将转换后的罗马数字字符串打印出来。

如果您想了解更多关于该程序的细节,可以看下面的代码注释:

import java.util.Scanner;

public class RomanNumeralConverter {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个长度小于等于9的数字字符串:");
        String input = scanner.nextLine();

        // 检查输入的字符串长度是否小于等于 9
        if (input.length() > 9) {
            System.out.println("输入的字符串长度太长!");
            return;
        }

        try {
            // 将输入的字符串转换为整数
            int num = Integer.parseInt(input);

            // 检查输入的数字是否在有效范围内
            if (num <= 0 || num >= 4000) {
                System.out.println("输入的数字必须在1和3999之间!");
                return;
            }

            // 调用 convertToRomanNumeral 方法将数字转换为罗马数字
            String romanNumeral = convertToRomanNumeral(num);

            // 打印转换后的罗马数字字符串
            System.out.println(input + " 转换为罗马数字为:" + romanNumeral);
        } catch (NumberFormatException e) {
            System.out.println("输入的字符串不是有效的数字!");
            return;
        }
    }

    // 将整数转换为罗马数字
    public static String convertToRomanNumeral(int num) {
        // 定义罗马数字和对应数字值的数组
        String[] romanNumerals = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
        int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};

        // 定义一个 StringBuilder 对象来构建罗马数字字符串
        StringBuilder romanNumeral = new StringBuilder();

        // 从大到小遍历罗马数字数组
        for (int i = 0; i < values.length; i++) {
            // 如果输入的数字大于或等于当前罗马数字对应的数字值
            while (num >= values[i]) {
                // 将当前罗马数字添加到字符串中
                romanNumeral.append(romanNumerals[i]);
                // 减去当前罗马数字对应的数字值
                num -= values[i];
            }
        }

        // 将 StringBuilder 对象转换为字符串并返回
        return romanNumeral.toString();
    }
}

main 方法中,我们首先创建了一个 Scanner 对象来读取用户输入的字符串。然后我们通过调用 scanner.nextLine() 方法从用户读取字符串。

接下来,我们检查输入的字符串长度是否小于等于 9。如果长度大于 9,我们打印一条错误消息并返回。如果字符串长度在有效范围内,我们尝试将其转换为整数。如果无法将字符串转换为整数,我们打印一条错误消息并返回。

如果成功将字符串转换为整数,我们检查

输入的数字是否在有效范围内。如果数字小于等于0或大于等于4000,我们打印一条错误消息并返回。否则,我们调用 convertToRomanNumeral 方法将数字转换为罗马数字。

convertToRomanNumeral 方法中,我们首先定义了一个包含罗马数字和对应数字值的数组。然后,我们创建了一个 StringBuilder 对象来构建罗马数字字符串。

我们从大到小遍历罗马数字数组,并检查输入的数字是否大于或等于当前罗马数字对应的数字值。如果是,我们将当前罗马数字添加到字符串中,并从输入的数字中减去当前罗马数字对应的数字值。我们重复这个过程直到输入的数字小于当前罗马数字对应的数字值。

最后,我们将 StringBuilder 对象转换为字符串并返回。

在本例中,我们使用了两个方法来实现程序。这样可以使程序更加模块化和易于阅读。 main 方法处理用户输入和程序的主要控制流程,而 convertToRomanNumeral 方法将数字转换为罗马数字。


原文链接:codingdict.net