Java语言怎么将数字转换为对应中文的读法

Java语言怎么将数字转换为对应中文的读法,比如1234转换为一千二百三十四,1000转换为一千

效果如图 :

img

代码 如下 :

import java.util.*;

public class NumberToChinese {
    private static final String[] CN_NUMERIC = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
    private static final String[] CN_UNIT = {"", "十", "百", "千", "万", "亿"};

    public static String numberToChinese(int number) {
        if (number == 0) {
            return CN_NUMERIC[0];
        }
        
        StringBuilder result = new StringBuilder();
        int unitIndex = 0;
        
        while (number > 0) {
            int digit = number % 10; // 获取最后一位数字
            if (digit != 0) {
                String digitStr = CN_NUMERIC[digit];
                String unit = CN_UNIT[unitIndex];
                result.insert(0, digitStr + unit);
            }
            
            number /= 10; // 去掉最后一位数字
            unitIndex++;
        }

        return result.toString();
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        int number = scanner.nextInt();
        
        String chinese = numberToChinese(number);
        
        System.out.println(number + " 的中文读法是:" + chinese);
        
        scanner.close();
    }
}


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/1083777
  • 这篇博客你也可以参考下:Java 求一个整数的个位,十位,百位,千位。
  • 除此之外, 这篇博客: Java循环基础练习题(含答案)中的 17. 所谓回文数是指正着数和倒着数一样大,比如1001,5005,8228,9999。请打印出1000-9999之间所有的回文数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    答案

    public static void main(String[] args) {
    		int count = 0;
    		for (int i = 1000; i < 10000; i++) {
    			int n = i;
    			int a = n%10;//取出个位数字赋值给a
    			int b = (n-a)/10%10;//取出十位数字赋值给b
    			int c = n/100%10;//取出百位数字赋值给c
    			int d = n/1000;//取出千位数字赋值给d
    			if (a == d && b == c) {
    				System.out.print(n + " " );
    				count++;
    				if (count%5==0) {
    					System.out.println();//每输出五个数字就换行
    				}
    			}
    		}
    	}
    

    运行结果
    在这里插入图片描述

  • 您还可以看一下 徐无忌老师的Java进阶高手课-并发编程透彻理解课程中的 案例实战:并发编程之12306抢票业务重点分析小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    要实现将数字转换为中文读法的功能,可以使用以下步骤:

    1. 定义一个方法,该方法接收一个整数作为参数,并返回该整数的中文读法。
    public static String convertToChinese(int number) {
       // 具体实现代码
    }
    
    1. 将传入的整数转换为字符串,方便处理每一位数字。
    String numberStr = String.valueOf(number);
    
    1. 创建一个字符串数组,用于存储0到9的中文读法。
    String[] chineseNumbers = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
    
    1. 创建一个字符串,用于保存最终的结果。
    String result = "";
    
    1. 循环遍历每一位数字,从最高位到最低位,逐位处理。
    for (int i = 0; i < numberStr.length(); i++) {
       // 处理每一位数字的逻辑
    }
    
    1. 获取当前位的数字值。
    int digit = Character.getNumericValue(numberStr.charAt(i));
    
    1. 根据当前位的数字值,从数组中获取对应的中文读法,并拼接到结果字符串中。
    result += chineseNumbers[digit];
    
    1. 在结果字符串的末尾添加合适的单位,例如:个、十、百、千、万等。
    if (digit != 0) {
       result += getUnit(numberStr.length() - i - 1);
    }
    
    1. 实现获取单位的方法。
    public static String getUnit(int exponent) {
       // 具体实现代码
    }
    
    1. 根据指数来确定单位,例如:0表示个,1表示十,2表示百等。

    2. 根据指数的值,选择合适的单位,并返回对应的中文读法。

    3. 返回最终结果字符串。

    4. 调用该方法,传入要转换的数字,即可得到对应的中文读法。

    代码示例:

    public class NumberConverter {
       public static void main(String[] args) {
           int number = 1234;
           String chineseNumber = convertToChinese(number);
           System.out.println(chineseNumber);
       }
    
       public static String convertToChinese(int number) {
           String numberStr = String.valueOf(number);
           String[] chineseNumbers = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
           String result = "";
    
           for (int i = 0; i < numberStr.length(); i++) {
               int digit = Character.getNumericValue(numberStr.charAt(i));
               result += chineseNumbers[digit];
    
               if (digit != 0) {
                   result += getUnit(numberStr.length() - i - 1);
               }
           }
           return result;
       }
    
       public static String getUnit(int exponent) {
           String[] units = {"个", "十", "百", "千", "万", "十万", "百万", "千万", "亿"};
           return units[exponent % units.length];
       }
    }
    

    运行示例:

    输出结果: 一千二百三十四


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^