Java实现阿拉伯数字转换成汉字数字

问题 输入一串阿拉伯数组将其转换成汉字数字?

在这里插入图片描述

问题分析

  • 阿拉伯数字转换汉字数字分析

假如有这么一串数字123456789要转换成汉字怎么转换?
123456789对应汉字是一二三四五六七八九
见到这种一一对应的要很自然想到使用数组实现功能

在这里插入图片描述
十进制数字正好对应数组0-9下标和汉字数字

  • 汉字数字带技术单位分析

还是假如有这么一串数字123456789读作一亿二千三百四十五万六千七百八十九
去除汉字数字就是计数单位{ “十”, “百”, “千”, “万”, “十”, “百”, “千”, “亿”}

具体代码

将上面分析的步骤用代码描述出来问题也就迎刃而解了

package com.fern.test;

import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class Cast {
	public static void main(String[] args) {
		System.out.println("请输入一个数:");
		Scanner sc=new Scanner(System.in);
		String str=sc.next();
		//将用户输入的字符串转换成char数组
		char[]numChar=str.toCharArray();
		String[] chinese = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
        String[] unit = { "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千" };
		StringBuffer sb=new StringBuffer();
		//获取用户输入的字符串长度
		int size=numChar.length;
		//遍历char数组
		for (int i = 0; i < numChar.length; i++) {
			//将用户输入的数字拿出来 
			//比如用户输入1234数字
			//numChar['1','2','3','4']
			//numChar[0]
			//因此拿到的阿拉伯数字就是num=1
			int num = Integer.parseInt(String.valueOf(numChar[i]));
			//因为咱们的汉字和数组下标一一对应,所以可以直接将拿到的阿拉伯数字作为中文数组的下标取汉字
			//因此这时chinese[1]对应的就是汉字"一"
			//再就是打印一个汉字数字就加一个单位
			//通过观察可以找出阿拉伯数字和单位的关系,关系如下
			//1234长度为4,对应到计数单位数组4索引是”万”单位
			//1是千单位,以4-1就可以得到计数单位数组的"千”单位
			//4-1=3|unit[3]拿第一个千
			//4-2=2|unit[2]拿第二个百
			//4-3=1|unit[1]拿第三个十
			if(i!=0){
				//数组长度-i
				//上述对应成代码就是 size-i
				//因为计数单位数组省略了"个”单位
				//所以需要减去1,取出所有单位
				//单位+数字|千二百三十四
				sb.append(unit[size-i-1]+chinese[num]);
			}else{
				//这里是第一个数字,第一个数字前面没有计数单位,所以单独拿出处理
				sb.append(chinese[num]);
			}
		}
		//结果就是一千二百三十四
		System.out.println(sb);
	}
}



猜你喜欢

转载自blog.csdn.net/qq_35953966/article/details/104253993