- 浏览: 182134 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (99)
- 备忘录 (48)
- linux (19)
- oracle (10)
- shell (8)
- awk (1)
- java (48)
- just do it (29)
- more and more (46)
- common (29)
- 设计模式 (8)
- Java Web (9)
- Spring (0)
- Structs 2 (2)
- Java 高级 (4)
- 存储 (3)
- Virtual Box (1)
- ant (1)
- maven (0)
- 数据结构 (5)
- 算法 (5)
- javascript (1)
- ajax (1)
- jquery (1)
- xml (1)
- IBM (3)
- 转载 (3)
- English (2)
- html&css (0)
- hibernate (2)
- mysql (1)
- memcached (1)
最新评论
-
飞出四季做的茧:
kris_zhang 写道int temp = 0 ; ...
Java IO流 Zip文件的压缩和解压缩 -
kris_zhang:
int temp = 0 ; while(( ...
Java IO流 Zip文件的压缩和解压缩 -
welcomezhang:
学习了,这块自己还得深挖下
为什么HashMap不是线程安全的 -
fomeiherz:
这个写的最详细了,赞一个
Java的泛型类和泛型方法 -
beijishiqidu:
hanmiao 写道http://yangguangfu.it ...
Java设计模式之策略模式
闲来无事,在网上搜索了一些面试的题目,开始练习下,下列代码的作用是把数字转换为大写的,主要是人民币的写法,暂时没有考虑小数位。
本人在main方法中列举出了一些测试例子,目前为止还么发现问题,哪位高手如果发现了,欢迎大家给我指出来,谢谢。另外,次方法只支持17位一下的转换。
package com.fit.test01; import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; public class DigitalLowerToUpper { private static final Map<String, String> digitDict = new HashMap<String, String>(); static { digitDict.put("0", "零"); digitDict.put("1", "壹"); digitDict.put("2", "贰"); digitDict.put("3", "叁"); digitDict.put("4", "肆"); digitDict.put("5", "伍"); digitDict.put("6", "陆"); digitDict.put("7", "柒"); digitDict.put("8", "捌"); digitDict.put("9", "玖"); digitDict.put("10", "拾"); } /** * 转换 * * @param obj * @return */ public static String upper(String obj) { if (obj.length() > 17) { return "Can not process it!"; } if (obj.length() <= 17 && obj.length() > 16) { StringBuffer sb = new StringBuffer(); BigDecimal db10000 = new BigDecimal("10000000000000000"); BigDecimal bd = new BigDecimal(obj); BigDecimal yushu = bd.remainder(db10000); BigDecimal shang = bd.divideToIntegralValue(db10000); if (yushu.toString().equals("0")) { return sb.append(getYuanzi(shang.toString())).append("亿") .append("亿").toString(); } if (yushu.toString().length() < 12) { return sb.append(getYuanzi(shang.toString())).append("亿") .append("亿").append(upper(yushu.toString())).toString(); } return sb.append(getYuanzi(shang.toString())).append("亿") .append(upper(yushu.toString())).toString(); } if (obj.length() <= 16 && obj.length() > 12) { StringBuffer sb = new StringBuffer(); BigDecimal db10000 = new BigDecimal("1000000000000"); BigDecimal bd = new BigDecimal(obj); BigDecimal yushu = bd.remainder(db10000); BigDecimal shang = bd.divideToIntegralValue(db10000); if (yushu.toString().equals("0")) { return sb.append(getYuanzi(shang.toString())).append("万") .append("亿").toString(); } if (yushu.toString().length() < 8) { return sb.append(getYuanzi(shang.toString())).append("万") .append("亿").append(upper(yushu.toString())).toString(); } return sb.append(getYuanzi(shang.toString())).append("万") .append(upper(yushu.toString())).toString(); } if (obj.length() <= 12 && obj.length() > 8) { StringBuffer sb = new StringBuffer(); BigDecimal db10000 = new BigDecimal("100000000"); BigDecimal bd = new BigDecimal(obj); BigDecimal yushu = bd.remainder(db10000); BigDecimal shang = bd.divideToIntegralValue(db10000); if (yushu.toString().length() == 1 && !yushu.toString().equals("0")) { return sb.append(getYuanzi(shang.toString())).append("亿") .append("零").append(upper(yushu.toString())).toString(); } return sb.append(getYuanzi(shang.toString())).append("亿") .append(upper(yushu.toString())).toString(); } if (obj.length() <= 8 && obj.length() > 4) { StringBuffer sb = new StringBuffer(); BigDecimal db10000 = new BigDecimal("10000"); BigDecimal bd = new BigDecimal(obj); BigDecimal yushu = bd.remainder(db10000); BigDecimal shang = bd.divideToIntegralValue(db10000); if (yushu.toString().length() == 1 && !yushu.toString().equals("0")) { return sb.append(getYuanzi(shang.toString())).append("万") .append("零").append(upper(yushu.toString())).toString(); } return sb.append(getYuanzi(shang.toString())).append("万") .append(upper(yushu.toString())).toString(); } if (obj.length() <= 4) { StringBuffer sb = new StringBuffer(); return sb.append(getYuanzi(obj)).toString(); } String result = ""; return result; } /** * 格式化字符串中的零 * * @param obj * @return */ public static String format(String obj) { if (!obj.startsWith("0")) { return obj; } Pattern p = Pattern.compile("^0*"); Matcher m = p.matcher(obj); String result = null; if (m.find()) { result = obj.substring(m.start() + 1); m.replaceFirst(""); } if (result.startsWith("0")) { return format(result); } return result; } /** * 递归调用的原子方法,以万位进位 * * @param obj * @return */ public static String getYuanzi(String obj) { String format = format(obj); StringBuffer sb = new StringBuffer(); if (format.length() == 0) { return sb.toString(); } if (obj.equals("0") && obj.length() == 1) { return sb.toString(); } if (format.length() != obj.length()) { sb.append("零"); } if (format.length() == 4) { String qian = format.substring(0, 1); String shengxia = format.substring(1); return sb.append(digitDict.get(qian)).append("千") .append(getYuanzi(shengxia)).toString(); } if (format.length() == 3) { String qian = format.substring(0, 1); String shengxia = format.substring(1); return sb.append(digitDict.get(qian)).append("佰") .append(getYuanzi(shengxia)).toString(); } if (format.length() == 2) { String qian = format.substring(0, 1); String shengxia = format.substring(1); return sb.append(digitDict.get(qian)).append("拾") .append(getYuanzi(shengxia)).toString(); } if (format.length() == 1) { String qian = format.substring(0, 1); if (qian.equals("0")) { return sb.toString(); } String shengxia = format.substring(1); return sb.append(digitDict.get(qian)).append(getYuanzi(shengxia)) .toString(); } return sb.toString(); } public static void main(String[] args) { // System.out.println(upper("45678123410000010")); // System.out.println(upper("40000100000100001")); //System.out.println(upper("40000000000000000")); //System.out.println(upper("4000000000000")); System.out.println(upper("4000000000001")); System.out.println(upper("4000001000101")); //System.out.println(upper("400000000")); //System.out.println(upper("400000001")); //System.out.println(upper("400010001")); //System.out.println(upper("411110001")); //System.out.println(upper("40000")); //System.out.println(upper("40001")); //System.out.println(upper("40101")); } }
本人在main方法中列举出了一些测试例子,目前为止还么发现问题,哪位高手如果发现了,欢迎大家给我指出来,谢谢。另外,次方法只支持17位一下的转换。
发表评论
-
为什么HashMap不是线程安全的
2016-06-15 22:27 2285序 最近因为项目的需求,经常会面试一些新人,也就会问他们 ... -
JAVA读取文件夹大小的几种方法实例
2016-04-24 15:39 771总是发现自己的C盘快满了,清理程序也不会帮我自己清理,然后 ... -
Java Regex - Matcher (java.util.regex.Matcher)
2015-03-01 13:59 880The Java Matcher class (java. ... -
Java Regex - Pattern (java.util.regex.Pattern)
2015-03-01 11:22 1572Java中的Pattern类是Java正则表达式API ... -
eclipse中查看jdk的源码
2014-11-23 11:43 1061最近一段时间跟jdk源码打交道的比较多,但是有的时候却是看 ... -
Struts2学习初设系列(一)之环境搭建
2014-07-20 22:47 1103已经毕业很长时间了,回过头来想想都不知道自己做了什么,由于 ... -
算法的时间复杂度分析
2014-07-20 11:14 16792.9.1 算法时间复杂度定义 在进 ... -
解析 Java 类和对象的初始化过程
2014-07-06 18:14 681问题引入 近日我在调试一个枚举类型的解析器程序,该 ... -
Java 中正确使用 hashCode 和 equals 方法
2014-07-05 18:17 684在这篇文章中,我将告诉大家我对hashCode和equals ... -
通过分析 JDK 源代码研究 Hash 存储机制
2014-07-05 17:22 646集合和引用 就像引 ... -
NIO 入门
2014-07-05 17:15 673在开始之前 关于本教程 新的输入/输出 (NIO) 库 ... -
利用AJax方式提交和Webservice完成页面输入汉字简体字回显繁体字
2014-06-29 18:05 1179最近一直在学习新的 ... -
How To Parse XML File Using XPath In Java
2014-06-29 11:59 1337最近一直在学习XML的Xpath解析方式,据说是一个很简单 ... -
Java排序算法之快速排序
2014-06-22 11:27 847快速排序使用分治法(Divide and conquer)策略 ... -
Java排序算法之简单选择排序
2014-06-21 22:31 796在网上搜索了很多的算法,貌似大家说的简单选择排序算法和直接选择 ... -
Java排序算法之冒泡排序
2014-06-21 20:22 1032冒泡排序算法的基本思想是:首先将第n-1个记录的关键字和第n个 ... -
Java排序算法之直接插入排序
2014-06-21 19:33 1231直接插入排序算法的基本思想是:把n个待排序的元素看成为 ... -
JAVA之桥接模式
2014-05-26 20:11 0桥模式:将某个问题抽象的不同形式分别与该问题的具体实现 ... -
Oracle SQL developer 报JVM错误解决和更换jdk
2014-05-03 20:35 0今日升级 Oracle SQL developer为2.1。发 ... -
多线程上机题
2014-04-08 23:46 985题目如下: 四个线程1,2,3,4. 线程1,2对变量i加一. ...
相关推荐
在Java编程中,将钱币小写金额转换为大写金额是一项常见的需求,特别是在财务系统或者电商平台上,为了符合规范和避免误解,金额通常会以大写形式展示。本知识点主要探讨如何利用Java实现这一功能。 首先,我们需要...
### 人民币小写金额转大写金额(Java版) #### 概述 本文将详细介绍一个Java程序,该程序用于将小写的人民币金额转换为大写形式。此转换主要用于财务、会计和其他正式场合,在这些场合中,大写金额是标准且必须的...
在Java编程中,将金额小写转换为大写是一个常见的需求,特别是在财务系统或银行应用中,为了符合规范,金额通常需要以大写形式展示,防止因大小写混淆导致的错误。本文将深入探讨如何实现这个功能,并通过提供的`...
小写数字转换为大写数字的过程涉及到一系列的映射规则。例如,阿拉伯数字1到9分别对应汉字的一、二、三、四、五、六、七、八、九;数字0对应零;而个位、十位、百位、千位、万位等的表示则有专门的汉字对应,如“壹...
用JAVA书写的一个大写金额转化为小写金额的类
在Java编程语言中,将数字转换为大写字母涉及到字符编码和字符串操作。这个过程通常用于格式化输出,比如在创建验证码、显示特定格式的序列号或者处理与数字相关的特殊需求时。以下是一些关键的知识点,解释了如何在...
人民币数字转换成汉字大写 android Java 运行效率
根据给定的文件信息,我们可以总结出以下有关“Java方法小写转换大写人民币”的相关知识点: ### 一、背景介绍 在财务处理、银行系统等业务场景中,经常需要将数字金额转换为中文大写形式,特别是对于精确度较高的...
精确到0.1
本节将详细探讨如何用Java编程语言实现一个精确到角的中文大写转小写数字的程序。 首先,我们需要了解中文大写数字与阿拉伯数字的对应关系: 1. 零:零 2. 一:壹 3. 二:贰 4. 三:叁 5. 四:肆 6. 五:伍 7. 六:...
在提供的压缩包文件中,"小写数字转换为大写"可能包含了一个实现这个功能的代码文件,可能是用Python、Java、JavaScript或其他编程语言编写的。开发者可以查阅这个文件,学习如何构建这样的函数,或者直接在自己的...
小写金额转换大写金额,小写金额转换大写金额.
本文将深入探讨如何在Android环境中实现这一功能,包括数字转中文以及数字金额转大写,并且会涉及到口语化的转换。 首先,数字转中文主要是将阿拉伯数字(如1、2、3等)转换成中文数字(如一、二、三等)。在Java或...
将小写数字变大写 如 输入1234567 可以输出一二三四五六七
java代码-使用java输入一个字符串,将字符串中的所有大写字母转换为小写字母,所有小写字母转换为大写字的源代码 ——学习参考资料:仅用于个人学习使用!
1. **数字转大写**:创建一个字符串数组,存储每个数字对应的汉字大写形式,例如:`{"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}`。然后通过数字的值作为索引来获取对应的大写字符。 2. **处理...
而且在我们转化过程中也是全部为大写的。 接着,我将缓存去掉了,检验一下是否跟缓存信息有关系? 去掉缓存之后依然是不正确的格式,仍是全部小写。 所以,没办法, 还得是去看响应实体中是否有问题,这时候我...
在IT行业中,编程语言Java是广泛使用的,尤其在金融、财务等领域,经常需要将小写的金额转换为大写的汉字表示,以满足规范的财务报告需求。这个“小写金额转大写”的主题就涉及到这样的一个功能实现。在这个压缩包...
可以实现将 10002 转换成壹万零貮元整 10100021转换成壹千零壹拾万零貮拾壹元整 110.00 转换成壹佰壹拾元整 10.01 转换成壹拾元零壹分
Java中关于金额小写转换为大写的工具类