实现的功能是将数字“673”转换成“陆佰柒拾叁”    “3681”转换成“叁仟陆佰捌拾壹”     “8007”转换成“捌仟零柒”

  主要使用了数组和循环来实现

  代码雏形

package com.test.array;

public class Num2RMB2 {
private static String[] han = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒",
"捌", "玖" }; //准备转换的汉字
private String[] unit = { "万" , "仟" , "佰" , "拾" ,"个"}; //准备单位 private String Num2Rmb(String str){
int strLength = str.length(); //首先先获得传入字符串的长度 String n = ""; //定义一个空字符串,用来接收最后形成的结果
/**
* 因为不确定要输入的数字是多少位,所以从后往前开始转换
* <1>数字的长度为strLength,所以从第strLength-1位(也就是从最小一位)开始转换
* <2>str.charAt函数可以获得字符串索引处的char值,然后再减去48,将该char转换为数字
* <3>因为个位数是不需要单位的,需要用i!=strLength-1来做判断,如果是最后一位,则不加单位
* <4>最后再将转换后的数字添加上单位连接起来
*/
for(int i=strLength-1;i>=0;i--){ //<1> int index = str.charAt(i)-48; //<2>
if(i!=strLength-1){ //<3>
n = han[index]+ unit[i] + n ; //<4>
}else{
n = han[index]+ n ;
}
}
return n;
} public static void main(String[] args) {
Num2RMB2 num2rmb = new Num2RMB2();
String daxie = num2rmb.Num2Rmb("56089");
System.out.println(daxie);
}
}

上面的代码还存在问题,例如这样的数字“10256” 则会转换成“壹万零仟贰佰伍拾陆”,所以这时候还需要在转换的时候做一个判断,如果该处的数字为0,也不加单位

所以上面的代码修改为

package com.test.array;

public class Num2RMB2 {
private static String[] han = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒",
"捌", "玖" }; //准备转换的汉字
private String[] unit = { "万" , "仟" , "佰" , "拾" }; //准备单位 private String Num2Rmb(String str){
int strLength = str.length(); //首先先获得传入字符串的长度 String n = ""; //定义一个空字符串,用来接收最后形成的结果
/**
* 因为不确定要输入的数字是多少位,所以从后往前开始转换
* <1>数字的长度为strLength,所以从第strLength-1位(也就是从最小一位)开始转换
* <2>str.charAt函数可以获得字符串索引处的char值,然后再减去48,将该char转换为数字
* <3>因为个位数是不需要单位的,需要用i!=strLength-1来做判断,如果是最后一位,则不加单位
* <4>最后再将转换后的数字添加上单位连接起来
*/
for(int i=strLength-1;i>=0;i--){ //<1> int index = str.charAt(i)-48; //<2>
if(i!=strLength-1 && index!=0){ //<3>
n = han[index]+ unit[i] + n ; //<4>
}else{
n = han[index]+ n ;
}
}
return n;
} public static void main(String[] args) {
Num2RMB2 num2rmb = new Num2RMB2();
String daxie = num2rmb.Num2Rmb("56089");
System.out.println(daxie);
}
}

这个时候基本上就已经差不多了,但是还存在问题,加入说数字为“50089”  则会转换成 “伍万零零捌拾玖”

所以说还需要做判断(待续)

实现数字转换RMB大写~的更多相关文章

  1. ORACLE数字转换人民币大写

    ORACLE 数字转换人民币大写     示例.   数字                    :183066999230.68 人民币大写        :壹仟捌佰参拾亿陆仟陆佰玖拾玖万玖仟贰佰参 ...

  2. 【PHP】金额数字转换成大写形式

    <?php /*将数字金额转成大写*/ function num_to_upper($num) { $d = array('零','壹','贰','叁','肆','伍','陆','柒','捌', ...

  3. C# 数字转换成大写

    /// <summary> /// 数字转大写 /// </summary> /// <param name="Num">数字</para ...

  4. js将数字转换成大写的人民币表达式

    function changeNumMoneyToChinese(money) { var cnNums = new Array("零", "壹", " ...

  5. PHP实现金额数字转换成大写函数

    <?php header("Content-Type:text/html;charset=utf-8"); function num_to_upper($num) { $d ...

  6. JavaScript实现把数字转换成中文

    /** * 数字转换汉字大写 * @constructor * 用法示例:new NumberToChinese(122222).toUpper(); new NumberToChinese(1222 ...

  7. 算法--java实现将数字转换成人民币大写(迅雷面试题)

    今天去迅雷面试,是个数字转换成人民币的算法题: public class Rmb { /** * 人民币的基本信息和操作 * * @author soyoungboy * @version 1.0 * ...

  8. C#小写数字金额转换成大写人民币金额的算法

    C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...

  9. js 将数字转换成人民币大写的方法

    //将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', ' ...

随机推荐

  1. iOS popToViewController具体用法

    [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIn ...

  2. LeetCode_226. Invert Binary Tree

    226. Invert Binary Tree Easy Invert a binary tree. Example: Input: 4 / \ 2 7 / \ / \ 1 3 6 9 Output: ...

  3. Linux查找含有特定字符串的文件

    Linux查找含有特定字符串的文件命令为grep.以下为详细的使用方法 grep [OPTIONS] PATTERN [FILE...] #实例:递归查找当前文件夹下所有含有test的文件,并显示行号 ...

  4. LODOP中table自动分页补线加border

    LODOP中可以用ADD_PRINT_TABLE.ADD_PRINT_HTM.ADD_PRINT_HTML.ADD_PRINT_TBURL等可以输出超文本的表格,超文有超过打印项高度或纸张高度自动分页 ...

  5. sudo启动程序引发的进程个数不对

    这几天把自己负责的服务改成了多进程模型,然后使用sudo来启动进程,示例程序如下:   int main(void)   {   fork();   while(1);   }   编译: `gcc ...

  6. mongodb4.0 安装

    下载: wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.9.tgz 解压缩 tar -zxvf mongodb-linux ...

  7. linux下查看进程的状态 /proc/[pid]/status

    查看进程的状态: 1.查看进程的pid,以java为例:ps -ef | grep java 2.查看进程状态:cat /proc/[pid]/status 关键字: linux [root@loca ...

  8. Eclipse设置每行的最大字符数

    Eclipse默认宽度是 120 个字符.如下图所示(提示:格式化快捷键Ctrl + Shift + F): 设置步骤如下: 菜单栏倒数第二项,选择Window 下拉栏最后一项,选择Preferenc ...

  9. 在被调用函数中获取资源及C++中的引用

    #include <iostream> using namespace std; struct Teacher{ char name[64]; int age; }; //在被调用函数 获 ...

  10. Go语言学习笔记(8)——包和结构体

    包 —— 每个可执行的应用程序必须包含一个主函数,它是执行的入口点.主函数应该存在main包中. 结构体: 通过 . 操作符访问结构体的各个成员! 1. 定义结构体类型person: type per ...