JAVA学习-练习试用Java实现“整数转换英文表示”

问题:

将非负整数 num 转换为其对应的英文表示。示例 1:

输入:num = 123

输出:"One Hundred Twenty Three"

示例 2:

输入:num = 12345

输出:"Twelve Thousand Three Hundred Forty Five"

示例 3:

输入:num = 1234567

输出:"One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"

示例 4:

输入:num = 1234567891

输出:"One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One"

提示:0 <= num <= 231 - 1

解答思路:

以下是使用 Java 语言实现将非负整数转换为英文表示的代码:

java 复制代码
public class IntegerToEnglishWords {
    public static String numberToWords(int num) {
        if (num == 0) {
            return "Zero";
        }

        String[] belowTwenty = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};
        String[] tens = {"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};
        String[] thousands = {"", "Thousand", "Million", "Billion"};

        StringBuilder sb = new StringBuilder();
        int i = 0;
        while (num > 0) {
            if (num % 1000!= 0) {
                sb.insert(0, thousands[i] + " ");
                int hundred = num / 100;
                num %= 100;
                if (hundred > 0) {
                    sb.insert(0, belowTwenty[hundred] + " Hundred ");
                }
                if (num > 0 && num < 20) {
                    sb.insert(0, belowTwenty[num] + " ");
                } else if (num >= 20) {
                    sb.insert(0, tens[num / 10] + " ");
                    num %= 10;
                    if (num > 0) {
                        sb.insert(0, belowTwenty[num] + " ");
                    }
                }
            }
            num /= 1000;
            i++;
        }

        return sb.toString().trim();
    }

    public static void main(String[] args) {
        int num = 1234567891;
        System.out.println(numberToWords(num));
    }
}

这个程序首先定义了一些数组,用于表示数字的英文单词。然后,它使用一个循环来处理数字的每三位,并将其转换为英文单词。在循环中,它根据数字的大小选择合适的单词,并将其添加到结果字符串中。最后,它返回结果字符串。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

相关推荐
日月云棠12 小时前
各版本JDK对比:JDK 25 特性详解
java
用户83071968408212 小时前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
JavaGuide13 小时前
Claude Opus 4.6 真的用不起了!我换成了国产 M2.5,实测真香!!
java·spring·ai·claude code
IT探险家13 小时前
Java 基本数据类型:8 种原始类型 + 数组 + 6 个新手必踩的坑
java
花花无缺13 小时前
搞懂new 关键字(构造函数)和 .builder() 模式(建造者模式)创建对象
java
用户9083246027313 小时前
Spring Boot + MyBatis-Plus 多租户实战:从数据隔离到权限控制的完整方案
java·后端
桦说编程14 小时前
实战分析 ConcurrentHashMap.computeIfAbsent 的锁冲突问题
java·后端·性能优化
程序员清风18 小时前
用了三年AI,我总结出高效使用AI的3个习惯!
java·后端·面试
beata19 小时前
Java基础-13: Java反射机制详解:原理、使用与实战示例
java·后端
用户03321266636719 小时前
Java 使用 Spire.Presentation 在 PowerPoint 中添加或删除表格行与列
java