`
uule
  • 浏览: 6352961 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

将正整数的阿拉伯钱数转换为中文形式

 
阅读更多
package test;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;

public class Test {
	//将正整数的阿拉伯钱数转换为中文形式,如1011→一千零一十一,输出。
	private static String[] chineseMapStr = {"零","一","二","三","四","五","六","七","八","九"};    
	       
	private static String[] specailStr0 = {"千","百","十"};  
	       
	private static String[] specailStr1 = {"亿","万"};  
	public static void main(String[] args) { 
		System.out.println(convert("1090021"));  
    } 

	private static String convert(String numberStr){  
           StringBuffer buffer=new StringBuffer();  
           List<String> list=new ArrayList<String>();  
             
           for(int i=0,j=numberStr.length();i<numberStr.length();i++,j--){  
               int num=Integer.parseInt(numberStr.substring(i,i+1));  
               String chinessNum=chineseMapStr[num];  //九
               String unit=getUnit(j);              //千
               if(chinessNum.equals("零")){  
                   if(!list.isEmpty()){  
                       String chinessNumInList=list.get(list.size()-1);  
                       if(chinessNumInList.equals("零")){  
                           list.remove(list.size()-1);  
                       }  
                   }  
               } 
               list.add(chinessNum);  
               if(!StringUtils.isEmpty(unit)){  
                   if(chinessNum.equals("零")){  
                      if(ArrayUtils.contains(specailStr0, unit)){  
                             
                       }else if(ArrayUtils.contains(specailStr1, unit)){  
                           list.remove(list.size()-1);  
                           list.add(unit);  
                       }
                   }else{  
                       list.add(unit);  
                   }  
               }     
           }  
             
           for(String num:list){  
               buffer.append(num);  
           }  
           return buffer.toString();  
       }  
    	         
       /**   
        * 位数表示,如亿、万等   
        * @param digit   
        * @return   
        */    
       private static String getUnit(int digit) {     
           String unit = "";    
           switch(digit) {     
           case 12:     
           case 8:     
           case 4:     
               unit = "千";     
               break;     
           case 11:     
           case 7:     
           case 3:     
               unit = "百";     
               break;     
           case 10:     
           case 6:     
           case 2:     
               unit = "十";     
               break;     
           case 9:     
               unit = "亿";     
               break;     
           case 5:     
               unit = "万";     
               break;     
           }  
           return unit;     
       }     
}

 

法2:

public class Test3 {
	
	 public static String translateMoney(int money) {  
         String total = "";//返回的字符串  
         String[] Money = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};  
         String[] Util = { " ","十", "百", "千", "万", "十", "百", "千", "亿"};  
         String strMoney = String.valueOf(money);//参数转字符串  
         String[] inMoney =strMoney.trim().split("");//参数转存到数组里  
         									//此处数组为[, 9, 0, 0, 8, 7, 9]
         for(int i=0;i<strMoney.length();i++){  
        	 String mon = Money[Integer.parseInt(inMoney[1+i])];
        	 String util = Util[strMoney.length()-i-1];
             total += (mon + util);
         }  
         return total;  
     }  
   
     public static void main(String[] args) {      
         System.out.println(translateMoney(900879));  
         	//九十零万零千八百七十九     有问题还需仔细处理
     }         
}
 

 来源:http://polaris1119.iteye.com/blog/766812

分享到:
评论

相关推荐

    java金额转换,阿拉伯数字转换成中国传统形式。

    在Java编程中,将阿拉伯数字转换为中国传统形式的金额表示是一项常见的需求,特别是在财务系统或者银行应用中。这种转换能够使数字更符合中国人的阅读习惯,增加可读性。在这个问题中,我们要处理的是将像...

    将阿拉伯数字转换为金额的汉字大写

    总的来说,将阿拉伯数字转换为金额的汉字大写是Java在财务领域中的一项基础应用,它体现了编程语言处理日常业务问题的能力。通过理解并实现这样的功能,开发者不仅可以加深对Java编程的理解,也能更好地服务于财务...

    C#商品金额大小写转换

    在C#编程中,将商品金额的阿拉伯数字转换为汉字大写形式,是常见的金融或会计软件中的一个功能。这通常涉及到数字与汉字字符的映射关系,以及金额单位的正确添加。以下是一些关于这个主题的重要知识点: 1. **数字...

    Qt实现人民币大写

    3. **数字转换**:这是关键步骤,我们需要将输入的数字转换为对应的中文大写形式。可以创建一个二维数组或者哈希表,存储数字与大写字符的对应关系。然后,通过字符串操作,如分割、遍历和替换,将数字字符串转换成...

    C语言程序实现: 倒序数

    倒序数是将一个阿拉伯数的各位上的数字以逆序的形式写成的数。该阿拉伯数的第一位变成最后位,最后位变成第一位。例如数1245被写成5421。注意产生的新数字前边所有的数字0是被略去的。倒序数的尾部无多余的数字0。...

    C#如何将商品金额小写转换成大写(C# .net)

    本篇文章将详细介绍如何在C# .NET环境下,将商品金额的小写阿拉伯数字转换为大写汉字。 首先,我们需要了解汉字数字的基本对应关系。在中文中,小写阿拉伯数字(0-9)与大写汉字数字的对应如下: 1. 0 对应 "零" 2...

    C语言程序:倒序数的实现

    1. **读取输入**:接收用户输入的正整数,并确定有多少组测试数据。 2. **处理数据**:对于每组测试数据,将其转换为字符串,然后逐个字符地进行反转。 3. **去除前导零**:反转后可能在字符串的最前面出现零,需要...

    人民币大写金额转换器,输入数字,直接变成人民币大写汉字

    本话题主要涉及如何将阿拉伯数字形式的金额转换为对应的人民币大写汉字。 在进行这种转换时,我们需要了解人民币大写金额的基本规则。以下是一些关键知识点: 1. **基本汉字单位**:人民币的大写金额通常包括以下...

    Ireport实现金额大写(自己实现的)

    本文将详细介绍如何使用Ireport内置的Scriptlet功能实现将金额转换为大写的汉字表示,这对于财务报表的制作尤为重要,因为在中国,金额通常需要以中文大写的形式出现,以增加数据的准确性,防止篡改。 首先,我们要...

    RMB.rar_RMB_人民币

    在编程实现时,可以利用简体到繁体的转换库,如Python中的`opencc`库,将转换后的汉字转换成繁体字。 在实际应用中,我们还需要考虑一些特殊情况,比如整数部分的末尾是0,通常会用“整”或“正”表示。例如,1000...

    把金额数字格式化大写的形式

    这个`formatToChinese`函数首先对输入的金额字符串进行预处理,确保其为正整数,并添加前导零。然后遍历每个数字,将其转换为大写形式,并根据单位位置插入对应的单位。最后,可能需要进行后处理,处理如"一十"转为...

    小写人民币转换成大写人民币

    在财务、会计以及正式文件中,为了防止篡改,经常需要将小写的阿拉伯数字金额转换为大写形式。这种转换在银行支票填写、合同金额书写等方面尤为常见。本文将详细介绍如何实现从小写(即阿拉伯数字)到大写(即汉字...

    EXCEL电子表格小写人民币转换成大写知识.pdf

    Excel中有一个隐藏的函数`NUMBERSTRING`,它可以将正整数转换为中文大写。该函数接受两个参数,`VALUE`是需要转换的数值,`TYPE`是样式编号,1代表“壹贰叁肆...”,2代表“壹拾贰叁肆...”,3则表示阿拉伯数字形式...

    64位16进制字符串to双精度浮点数_labview_64位浮点_双精度

    2. **转换为二进制**:接着,将每个16进制数字转换为二进制形式。这可以通过乘以16的幂来实现,然后对结果进行求和。例如,16进制数“C”等于12,其二进制表示为1100。LabVIEW的“十六进制到二进制”函数可以完成这...

    人民币大小写转换java完美版(媲美商用版)

    1. **字符映射**:创建一个包含所有汉字数字的字符数组或Map,用于将阿拉伯数字(0-9)映射到相应的汉字大写形式(零、壹、贰、叁、肆、伍、陆、柒、捌、玖)。 2. **单位处理**:人民币金额有多个单位,如元、角、...

    python判断数字的函数.docx

    6. **is_integer()** 方法:这是浮点数对象的一个方法,用于检查浮点数是否可以无损地转换为整数。例如,`10.0.is_integer()` 返回 `True`,而 `3.14.is_integer()` 返回 `False`。 7. **abs()** 函数:该函数返回...

    计组第03章1

    这对于人类阅读和编写二进制代码更为方便,因为一个四位的二进制数可以转换为一个十六进制数。 接着,原码是二进制数的直接表示,正数的最高位(符号位)为0,负数的最高位为1。然而,原码无法直接表示负数的加减...

    小学数学概念辨析PPT学习教案.pptx

    13. 化简比与求比值:化简比是将比例简化为最简整数比,求比值则是求比例中两个数的比率。 理解这些概念的区别和联系对于小学生来说至关重要,因为它们构成了数学学习的基础,直接影响到学生的数学思维能力和解决...

    大小写金额转换-源码

    {-------------------------------------------------------------------- 货币数字转为为中文大写的组件 Version 1.31 by SNAKEJIAO 2003.4.13简介: 可以转化整数,浮点数,及时间日期型数据 配合别名列表可以进行...

    Excel中函数及函数功能汇总.pdf

    - `TRUNC`:将数截断为整数。 3. **统计函数**: - `AVEDEV`:返回数据集与平均值的绝对偏差的平均值。 - `AVERAGE`:计算一组数值的平均值。 - `AVERAGEA`:除了计算数值外,还包括文本和逻辑值的平均值。 - ...

Global site tag (gtag.js) - Google Analytics