`
wuce7758
  • 浏览: 182263 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • YTT1121: 有网络拓扑发现的源代码么?能不能发我一份学习一下,现在我正要做 ...
    java拓扑图
  • YTT1121: 大神,有网络拓扑发现的源代码么?或者您会编写么?我需要做科研改 ...
    java拓扑图
  • YTT1121: 大神,有网络拓扑发现的源代码么?或者您会编写么?我需要做科研改 ...
    java拓扑图
  • poettang: 求代码分享学习,谢谢!膜拜大神!258026921@qq.co ...
    java拓扑图
  • oiqio: 87836238@qq.com,感谢楼主,来一份~
    java拓扑图

人民币转换数字

 
阅读更多

       该贴原因:

       今日有幸看到uuwatch面试题:大概意思就是将日常中人民币的大写转换成阿拉伯数字表示,不记小数点,同时需要考虑效率,因为该方法需要执行100万次。

       1、实现该代码(代码效率可能欠佳,望看到的同仁提出更高效率的算法)

 

 

     

 

package wzf.learn.excelDemo1.test;

import java.util.HashMap;
import java.util.Map;

public class RMB2Num {

	private static Map<String,String> chineseMap = new HashMap<String,String>();
	
	static {
		chineseMap.put("壹", "1");
		chineseMap.put("贰", "2");
		chineseMap.put("叁", "3");
		chineseMap.put("肆", "4");
		chineseMap.put("伍", "5");
		chineseMap.put("陆", "6");
		chineseMap.put("柒", "7");
		chineseMap.put("捌", "8");
		chineseMap.put("玖", "9");
		chineseMap.put("零", "");
		chineseMap.put("亿", "100000000");
		chineseMap.put("万", "10000");
		chineseMap.put("仟", "1000");
		chineseMap.put("佰", "100");
		chineseMap.put("拾", "10");
		chineseMap.put("圆", "");
		chineseMap.put("整", "");
		
	}
	public long change1(String rmb){
		long retStr = 0L ;
		
		//先看里面是否包含亿
		if(rmb.contains("亿")){
			retStr = retStr + yi(rmb.substring(0, rmb.indexOf("亿"))) * Long.valueOf(chineseMap.get("亿"));
		}
		
		////先看里面是否包含万
		int indexwan = 0;
		rmb = rmb.substring(0, rmb.indexOf("亿"));
		if(rmb.contains("万")){
			indexwan = rmb.indexOf("万");
			retStr = retStr + wan(rmb.substring(1, rmb.indexOf("万"))) * Long.valueOf(chineseMap.get("万"));
		}
		//截取万后面的
		
		retStr = retStr + qian(rmb.substring(indexwan+1, rmb.length() ));
		
		return retStr;
	}
	
	
	public long yi(String yi){
		long ret = 0l;
		
		int indexwan = 0;
		if(yi.contains("万")){
			indexwan =yi.indexOf("万");
			ret = ret + wan(yi.substring(1, yi.indexOf("万"))) * Long.valueOf(chineseMap.get("万"));
		}
		ret = ret + qian(yi.substring(indexwan+1, yi.length()));
		return ret;
	}
	
	public long wan(String wan){
		return qian(wan.substring(0, wan.length()));
	}
	
	//万以后的
	public long qian(String qian){
		long retStr = 0l;
		String segument = "";
		for (int i = 0; i < qian.length(); i++) {
			String temp = qian.substring(i,i+1);
			if("仟".equalsIgnoreCase(temp)){
				retStr = retStr + Long.valueOf(segument.equals("")?"1":segument)*Long.valueOf(chineseMap.get(temp)) ;
				segument = "";
			}else if("佰".equalsIgnoreCase(temp)){
				retStr = retStr + Long.valueOf(segument.equals("")?"1":segument)*Long.valueOf(chineseMap.get(temp)) ;
				segument = "";
			}else if("拾".equalsIgnoreCase(temp)){
				retStr = retStr + Long.valueOf(segument.equals("")?"1":segument)*Long.valueOf(chineseMap.get(temp)) ;
				segument = "";
			}else{
				segument = segument + chineseMap.get(temp);
			}
		}
		if(segument.length() > 0){
			retStr = retStr + Long.valueOf(segument);
		}
		return retStr;
	}
	
	public static void main(String[] args) {
		RMB2Num rmb = new RMB2Num();
		
		System.out.println(rmb.qian("壹仟零叁圆整"));
		System.out.println(rmb.change1("壹佰万零叁拾亿柒仟捌佰零玖万壹仟零叁圆整"));
	}

	
}

 

  2、需要写三个测试用例      

 

   3、写出测试用例的关键点

 

分享到:
评论

相关推荐

    人民币数字转换.

    人民币数字转换.

    将人民币转换为阿拉伯数字

    使用java编程实现将人民币大写转换为阿拉伯数字。本程序仅实现万元以下的人民币转换,输入数据必须以元结尾。

    人民币数字转换成汉字大写

    人民币数字转换成汉字大写 android Java 运行效率

    python实现人民币大写转换

    本文实例为大家分享了python实现人民币大写转换的具体代码,供大家参考,具体内容如下 #!/usr/bin/python # -*- coding:utf-8 -*- # ********* 转换方法介绍 ********* # 将需要转换的数字从右向左,每4位分成一个...

    Java人民币金额数字转换成大写

    Java 人民币金额数字转换成大写 Java 人民币金额数字转换成大写是 Java 面试中最常见的问题之一。本文将详细介绍如何使用 Java 实现人民币金额数字转换成大写的解决方案。 Java 中的 NumberFormat 类 在 Java 中...

    JS将数字转换为大写汉字人民币

    JS将数字转换为大写汉字人民币

    数字转换成人民币大写

    数字转换成人民币大写

    java实现数字转换人民币中文大写工具

    Java 实现数字转换人民币中文大写工具 Java 实现数字转换人民币中文大写工具是指使用 Java 语言将数字转换为人民币中文大写格式的工具。该工具具有很高的实用价值,特别是在人事业务系统开发中,经常需要将数字转换...

    网页模板——原生JS实现的人民币数字大写转换特效源码.zip

    原生JavaScript实现的人民币数字大写转换特效源码就是解决这类问题的一个工具。这个网页模板提供了一种高效且灵活的方法,使得前端开发者能够轻松地在网页上实现这一功能。 首先,我们要理解原生JavaScript是如何...

    人民币转换(原代码)

    【人民币转换】是一个常见的编程需求...总之,人民币转换是一个涉及数字与汉字对应、位数处理、字符串操作等多个知识点的编程任务,通过实现这一功能,我们可以加深对编程语言的理解,同时提高在实际问题中的解决能力。

    数字转成人民币大写代码

    这段代码是用于将数字转换为中文大写的人民币表示方式,主要应用于财务软件或者与货币相关的程序中,方便在中文环境中准确地表示金额。这个函数名为`GetChinaNum`,接收4个参数:`otherNum`、`isRMB`、`numOption`和...

    excel中数字自动转换成人民币大写文字

    在Excel中,将数字转换为人民币大写文字是一项常见的需求,尤其在财务报表或发票制作时更为重要。人民币大写的规范格式包括“壹”、“贰”等汉字,确保了金额的准确性和专业性。以下是一些关于如何在Excel中实现这一...

    人民币数字转大写_金额转换小工具

    人民币数字转大写_金额转换小工具 财务人员经常用到。

    中科大-软件测试实验一-人民币数字大写转换黑盒测试实验报告.docx

    "中科大-软件测试实验一-人民币数字大写转换黑盒测试实验报告" 本实验报告旨在对人民币数字大写转换软件进行黑盒测试,测试目的在于评估该软件的质量和可靠性。下面是实验报告的详细内容: 一、引言 软件测试是...

    人民币数字转换成汉字

    人民币数字转换成汉字,小数点后面保留两位数字,保存到分

    Rmb.rar_人民币 转换 java_人民币大写

    这个"Rmb.rar_人民币 转换 java_人民币大写"的压缩包就是一个典型的例子,它包含了一个Java程序,用于将数字转换成符合中国金融规范的人民币大写形式。这种转换对于财务报表、发票开具等场景至关重要,因为它们要求...

    C# 繁体转中文,中文转繁体,数字转中文(人民币),中文转数字(人民币)支持敏感词过滤

    其次,数字转中文(人民币)和中文转数字(人民币)是金融应用中常见的需求。在C#中,我们可以创建一个包含中文数字字符的字符串数组,然后通过遍历数字字符串,将每个数字对应转换为中文字符。对于人民币金额,需要...

    人民币数字转大写.java

    人民币数字转大写.java

    人民币大写金额转数字源码

    本文将详细讲解如何实现“人民币大写金额转数字”的算法,主要基于C#编程语言。 首先,我们需要了解人民币大写金额的基本规则。人民币大写金额由“零”、“壹”、“贰”、“叁”、“肆”、“伍”、“陆”、“柒”、...

Global site tag (gtag.js) - Google Analytics