2017-5-12-01 输入数字输出汉字读法

本文介绍两种将阿拉伯数字转换为汉字读法的方法。一种是通过定义数组来映射数字和单位,另一种则是使用预设模板进行替换。适用于处理中文环境下的数字显示。

输入数字输出汉字读法

(参考:http://tieba.baidu.com/p/4101663044)

例如,输入7865,输出:七千八百六十五

解决一:

(事先定义一个装有“个十百千万”,一个装有“零一二三四五.....”的数组或者集合A和B,首先获取用户输入数字的长度,然后获得各个位,每个位数就是B的下标,然后长度就是A的下标减一,比如: 485 4对应B[4]为“四”,A[2]为百 8对应B[8]为八,A[1]为十 。)

public class Test {
	public static void main(String[] args) throws IOException {
		String [] A={"","十","百","千","万"};
		String [] B={"零","一","二","三","四","五","六","七","八","九"};
		BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
		String inputString = buffer.readLine();
		//String inputString ="4859";
		StringBuilder result= new StringBuilder();
		int intNum= Integer.parseInt(inputString);
		int len = inputString.length();
		for(int i=0;i<len;i++) {
			int yu = intNum%10;
			result.insert(0, A[i]);
			result.insert(0, B[yu]);
			intNum/=10;
		}
		System.out.println(result.toString());
	}
}

解决二:

(定好模板:x万x千x百x十x,逐个提取阿拉伯数字,自右向左替换模板的x,当然阿拉伯数字还是要映射成中文,最后把替换后的模板由左数起至最后一个x的下一位截掉,剩下的就是结果)

public class Test {
	public static void main(String[] args) throws IOException {
		String template= "x万x千x百x十x";
		char[] ch=template.toCharArray();
		char [] B={'零','一','二','三','四','五','六','七','八','九'};
		BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
		String inputString = buffer.readLine();
		//String inputString ="4859";
		int intNum= Integer.parseInt(inputString);
		int len = inputString.length();
		for(int i=0;i<len;i++) {
			int yu = intNum%10;
			int index= template.lastIndexOf("x");
			ch[index]=B[yu];
			intNum/=10;
			template=String.valueOf(ch);
		}
		int index= template.lastIndexOf("x");
		System.out.println(template.substring(index+2));
	}
}

  

转载于:https://www.cnblogs.com/zhouqg/p/6847208.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值