数字串转中文读法串-Java实现

原创 2015年11月19日 10:16:48

面试时被问到这个问题,遂查看相关博客,自己也作了相应的实现:

package num2rmb;
public class Num2Rmb3 {
	/**
	 * 处理0,1,2.。9的中文读法的
	 */
	private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" , "伍" , "陆" , "柒" , "捌" , "玖"};
	/**
	 * 10进制的读法
	 */
	private String[] unitArr = {"十" , "百" , "千"};
	public static void main(String[] args) {
		Num2Rmb3 nr = new Num2Rmb3();
		nr.readNumString("1052433768");
//		nr.readNumString("5000");
//		System.out.println(Math.ceil(3.5));   //4.0
	}

	public void readNumString(String numstr)
	{
		StringBuilder sb = new StringBuilder();
		int len = numstr.length();
		int count = 0;
		while (len > 0)    //依次取出最后,以4位字符为标准取子串
		{
			int i = (len - 4) >= 0 ? (len - 4) : 0;
			String temp = numstr.substring(i, len);
			System.out.println(temp);
			String res = processTemp(temp, count);  // 对这四个字符进行处理
			sb.insert(0, res);              //往前将求得的字符串插入sb中
			len -= 4;
			count++;  // 记录这个子串中能组成多少个 4个字符的串

		}
		System.out.println(sb);


	}
	public String processTemp(String temp, int count)
	{
		String res = "";
		int len1 = temp.length();
		// 0042
		// 200
		for (int i = 0; i < len1; i++)
		{
			//将每个字符转成数字
			int num = temp.charAt(i) - 48;
			if (num == 0)  //如果是0
			{
				if (i == (len1 - 1))  //到了子串的最后一个字符
				{
					continue;
				}
				//如果下一个是数字字符不是0
				if (temp.charAt(i + 1) != '0')
				{
					res += hanArr[num];
				}
				else {
					continue;
				}
			}
			else if( i == (len1 - 1) ) {  //不是0,最后一个字符
				res += hanArr[num];
			}
			else  //
			{
				res += hanArr[num] + unitArr[len1 - i - 2];
			}
		}

		if (count == 1)
		{
			res += "万";
		}
		else if (count == 2)
		{
			res += "亿";
		}
		return res;
	}

}


版权声明:取长补短,学以致用……

蓝桥杯 练习系统 数的读法 Java

蓝桥杯 练习系统 数的读法 Java
  • csdn_lipoet
  • csdn_lipoet
  • 2015年05月26日 19:19
  • 1384

数的读法

问题描述   Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。   比如说,在对学生讲解第123...
  • yjg211314
  • yjg211314
  • 2016年01月24日 21:26
  • 1011

【Java编程】之中文数字转换为阿拉伯数字

遇到一个很有意思的题目,输入一个中文数字的字符串,然后输入字符串所代表的值。自己的思路: 首先想到了映射,就是把中文数字映射为数字,HashMap的import java.util.List; imp...
  • mlstd2012
  • mlstd2012
  • 2016年08月21日 01:40
  • 2195

Java实现将阿拉伯数字转为汉字

比如输入“123”,返回“一百二十三”
  • u011718205
  • u011718205
  • 2016年04月11日 18:45
  • 6576

java 把数字转换为中文读法 例如:123->一百二十三

圣思园 java 数字 转换 汉字 第一次 竞赛 通过命令行 输入一串字符 中文的大写...
  • dapeng630790557
  • dapeng630790557
  • 2011年04月01日 16:26
  • 4257

Java 数字转换成中文读法

  • 2010年06月10日 17:50
  • 964B
  • 下载

数字串转中文读法串-Java实现

面试时被问到这个问题,遂查看相关博客,自己也作了相应的实现: package num2rmb; public class Num2Rmb3 { /** * 处理0,1,2.。9的中文读法的 ...
  • jiaobuchong
  • jiaobuchong
  • 2015年11月19日 10:16
  • 655

数的读法 C++实现

//这个题花了我几乎3个小时,程序写的也不是太好,但毕竟是把题刷过去了。最烦的是到最后才发现错误原因竟是数组没有初始化,引以为戒!! 问题描述   Tom教授正在给研究生讲授一门关于基...
  • jiachang98
  • jiachang98
  • 2018年01月22日 13:28
  • 25

阿拉伯数字转换成中文读法

给定一个阿拉伯数字,然后将数字转换成中文的读法。这几天在连续两个笔试中遇到了这道题,结果都有些悲剧了,趁今天有时间,怒写一记算法。 public static String readNu...
  • zuoyexingchennn
  • zuoyexingchennn
  • 2015年05月16日 13:53
  • 1060

蓝桥杯 基础练习 数的读法

基础练习 数的读法 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述   Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条...
  • qq_32734731
  • qq_32734731
  • 2017年01月30日 21:14
  • 538
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数字串转中文读法串-Java实现
举报原因:
原因补充:

(最多只允许输入30个字)