**公司的面试题,非得写出代码,发到博客分享一下吧,有问题希望大家多指正,互相学习,小弟是小虾米!
package com.pyc.maven.demo.jerry;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
*
* @author boy
*
*/
public class Analysis {
private final static Map<Character,Integer> unitMap = new HashMap<Character,Integer>();
private final static Map<Character,Integer> amountMap = new HashMap<Character,Integer>();
static{
unitMap.put('亿', 100000000);
unitMap.put('万', 10000);
unitMap.put('千', 1000);
unitMap.put('佰', 100);
unitMap.put('拾', 10);
unitMap.put('圆', 1);
amountMap.put('玖', 9);
amountMap.put('捌', 8);
amountMap.put('柒', 7);
amountMap.put('陆', 6);
amountMap.put('伍', 5);
amountMap.put('肆', 4);
amountMap.put('叁', 3);
amountMap.put('贰', 2);
amountMap.put('壹', 1);
}
public static void main(String[] args) {
long start = System.currentTimeMillis();
System.out.println(analysis("壹佰贰拾叁万"));
System.out.println(analysis("玖拾玖"));
System.out.println(analysis("壹万零叁佰"));
System.out.println(analysis("壹万零叁"));
System.out.println(analysis("叁千万"));
long end = System.currentTimeMillis();
System.err.println(end - start);
}
/**
* 大写的人民币金额转换为数字
* @param target
* @return
*/
public static int analysis(String target){
if(null == target || "".equals(target))
return 0;
if(!amountMap.containsKey(target.charAt(0))){
target = "壹"+target;
}
if(!unitMap.containsKey(target.charAt(target.length()-1))){
target = target+"圆";
}
char[] cc = target.toCharArray();
System.out.println(Arrays.toString(cc));
System.out.println("************************************");
/**
* 中间变量
*/
int temp = 0;
/**
* 之前取到的单位的值
*/
int preUnitValue = 0;
/**
* 结果
*/
int result = 0;
for(char c : cc){
/**
* 拿到数字
*/
if(isAmount(c)){
temp = amountMap.get(c);
}
/**
* 拿到单位
*/
else if(isUnit(c)){
int unitValue = unitMap.get(c);
/**
* 单位<=单位模式,相乘
* 单位>单位模式,相加
*/
if(preUnitValue !=0 && unitValue >= preUnitValue){
result = (result+temp) * unitValue;
}else{
result = result + temp*unitValue;
}
preUnitValue = unitValue;
temp = 0;
}
}
return result;
}
/**
* 判断是否是数字
* @param c
* @return
*/
private static boolean isAmount(char c){
return amountMap.containsKey(c);
}
/**
* 判断是否是单位
* @param c
* @return
*/
private static boolean isUnit(char c){
return unitMap.containsKey(c);
}
}
分享到:
相关推荐
用JAVA书写的一个大写金额转化为小写金额的类
根据给定的SQL函数“MoneyToCapital”,我们可以深入解析并理解其如何实现将人民币数值转换为中文大写的功能。此函数不仅关注基本的数字转换,还考虑了进位处理、精度设定以及数值范围的限制,确保了转换结果的准确...
切实可用,实现人民币金额大写转小写,可以精确到分。
为方便进行打印票据中的人民币大写,把网上的一段代码装在VCL中,并加入负数处理.其实就是一个函数VCL.在程序中可以这样用edit2.Text:=RMB1.GetBigStr(StrToFloat(edit1.text));或者这样RMB1.small:=StrToFloat(edit1....
### 人民币小写金额转大写金额(Java版) #### 概述 本文将详细介绍一个Java程序,该程序用于将小写的人民币金额转换为大写形式。此转换主要用于财务、会计和其他正式场合,在这些场合中,大写金额是标准且必须的...
### 小写人民币转大写ACCESS函数解析 #### 背景介绍 在日常的财务工作中,经常需要将数字格式的金额转换成汉字大写形式,尤其是在开具支票、填写电汇凭证或制作记账凭证时更为常见。这种转换不仅能够提高正式文件的...
MFC制作的人民币小写金额转化大写金额,方便出差回来时报账填写账单大写RMB使用,欢迎下载
人民币小写转大写人民币小写转大写人民币小写转大写
在JavaScript编程中,有时我们需要将人民币的数字金额(小写)转换为中文的大写形式,以便于财务报表或发票的规范书写。这个过程涉及到字符映射、数字处理以及字符串操作等多个知识点。以下是对这个主题的详细说明:...
小写转大写的转换规则主要涉及以下几点: 1. **数字与汉字的对应关系**:每个阿拉伯数字都有其对应的汉字表示。 - 0 对应 “零” - 1 对应 “壹” - 2 对应 “贰” - 3 对应 “叁” - 4 对应 “肆” - 5 对应...
java 人民币大小写转换 利用BufferString和正则表达式做的。。。不到70行的代码,注释相当的详细,当然也写了一个C版本的,要的话,可以留下Email
Java中关于金额小写转换为大写的工具类
这篇博客"PHP 人民币小写转换成大写"提供了一个实用的解决方案,通过源码实现这一功能。 首先,我们需要理解人民币金额的大写规则。在中国,人民币金额的大写包括壹、贰、叁、肆、伍、陆、柒、捌、玖、零这些汉字,...
本文将详细介绍"BAT批处理脚本-格式转换-人民币金额小写转大写.cmd.zip"这个压缩包中的知识点,以及如何利用批处理脚本来实现人民币金额的小写到大写的转换。 首先,我们要理解批处理脚本的基本概念。批处理脚本是...
"人民币小写转大写dll" 是一个特定的DLL文件,其功能专注于将人民币金额从小写形式转换为大写形式,这是在金融和会计软件中常见的需求,因为在中国,正式的财务记录通常要求金额以大写汉字表示,以防止篡改和提高...
这个工具类中的`toChineseCapital`方法可以接收一个小写金额字符串,返回转换后的人民币大写表示。在实际项目中,可能还需要对输入进行校验,确保其格式正确,例如检查是否包含非法字符,金额是否超出合理范围等。 ...
android安卓人民币小写转大写程序APK,可下载到手机安装,以后写人民币大写就很方便啦
首先,我们需要了解人民币大写的基本规则。人民币大写的表示方式如下: 1. 零:零 2. 一:壹 3. 二:贰 4. 三:叁 5. 四:肆 6. 五:伍 7. 六:陆 8. 七:柒 9. 八:捌 10. 九:玖 11. 十:拾 12. 百:佰 13. 千:...