实现数字转换RMB大写~
实现的功能是将数字“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大写~的更多相关文章
- ORACLE数字转换人民币大写
ORACLE 数字转换人民币大写 示例. 数字 :183066999230.68 人民币大写 :壹仟捌佰参拾亿陆仟陆佰玖拾玖万玖仟贰佰参 ...
- 【PHP】金额数字转换成大写形式
<?php /*将数字金额转成大写*/ function num_to_upper($num) { $d = array('零','壹','贰','叁','肆','伍','陆','柒','捌', ...
- C# 数字转换成大写
/// <summary> /// 数字转大写 /// </summary> /// <param name="Num">数字</para ...
- js将数字转换成大写的人民币表达式
function changeNumMoneyToChinese(money) { var cnNums = new Array("零", "壹", " ...
- PHP实现金额数字转换成大写函数
<?php header("Content-Type:text/html;charset=utf-8"); function num_to_upper($num) { $d ...
- JavaScript实现把数字转换成中文
/** * 数字转换汉字大写 * @constructor * 用法示例:new NumberToChinese(122222).toUpper(); new NumberToChinese(1222 ...
- 算法--java实现将数字转换成人民币大写(迅雷面试题)
今天去迅雷面试,是个数字转换成人民币的算法题: public class Rmb { /** * 人民币的基本信息和操作 * * @author soyoungboy * @version 1.0 * ...
- C#小写数字金额转换成大写人民币金额的算法
C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...
- js 将数字转换成人民币大写的方法
//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', ' ...
随机推荐
- iOS popToViewController具体用法
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIn ...
- LeetCode_226. Invert Binary Tree
226. Invert Binary Tree Easy Invert a binary tree. Example: Input: 4 / \ 2 7 / \ / \ 1 3 6 9 Output: ...
- Linux查找含有特定字符串的文件
Linux查找含有特定字符串的文件命令为grep.以下为详细的使用方法 grep [OPTIONS] PATTERN [FILE...] #实例:递归查找当前文件夹下所有含有test的文件,并显示行号 ...
- LODOP中table自动分页补线加border
LODOP中可以用ADD_PRINT_TABLE.ADD_PRINT_HTM.ADD_PRINT_HTML.ADD_PRINT_TBURL等可以输出超文本的表格,超文有超过打印项高度或纸张高度自动分页 ...
- sudo启动程序引发的进程个数不对
这几天把自己负责的服务改成了多进程模型,然后使用sudo来启动进程,示例程序如下: int main(void) { fork(); while(1); } 编译: `gcc ...
- mongodb4.0 安装
下载: wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.9.tgz 解压缩 tar -zxvf mongodb-linux ...
- linux下查看进程的状态 /proc/[pid]/status
查看进程的状态: 1.查看进程的pid,以java为例:ps -ef | grep java 2.查看进程状态:cat /proc/[pid]/status 关键字: linux [root@loca ...
- Eclipse设置每行的最大字符数
Eclipse默认宽度是 120 个字符.如下图所示(提示:格式化快捷键Ctrl + Shift + F): 设置步骤如下: 菜单栏倒数第二项,选择Window 下拉栏最后一项,选择Preferenc ...
- 在被调用函数中获取资源及C++中的引用
#include <iostream> using namespace std; struct Teacher{ char name[64]; int age; }; //在被调用函数 获 ...
- Go语言学习笔记(8)——包和结构体
包 —— 每个可执行的应用程序必须包含一个主函数,它是执行的入口点.主函数应该存在main包中. 结构体: 通过 . 操作符访问结构体的各个成员! 1. 定义结构体类型person: type per ...