public class Test{

// 定义三个字符数组,把中文的数字形式存储下来,再下面代码中获取下标,设置对应中文
private static char[] hunit = { '拾', '佰', '仟' };
private static char[] vunit = { '万', '亿' };
private static char[] digit = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒',
'捌', '玖' };

public static void main(String[] args) {
// 定义一个方法,转换数字成中国传统形式,用res接收
String res = numberChineseString(101000001010l);
// 打印转换结果
System.out.println(res);
}

private static String numberChineseString(long value) {
// 把该数字转换成字符串,方便计算小数点后的位数
String num = String.valueOf((long) (value * 100));
// 通过String中的截取字符串的方法,获取小数点前面的数字
String head = num.substring(0, num.length() - 2);
// 通过String中的截取字符串的方法,获取小数点后面的数字
String fina = num.substring(num.length() - 2);

// 定义两个字符串,分别存储转换的中文形式的金额
String headStr, finaStr;
// 定义方法处理钱中的小数点前面的整钱
headStr = handleHead(head);
// 定义方法处理钱中的 角和分
finaStr = handleFinall(fina);
// 返回转换成中文形式的金额字符串
return headStr + finaStr;
}

private static String handleHead(String head) {
// 定义字符串,暂时存储转换的金额
String headStr = "";
// 把金额字符串转换成字符数组,方便下面进一步判断
char[] headArray = head.toCharArray();
// 判断前一位是否的0
boolean preZero = false;
// 判断前面相邻的有几个0
int zeroCount = 0;
// 循环处理每个数字
for (int i = 0; i < headArray.length; i++) {
// 取hunit数组下标
int hunitIndex = (headArray.length - i - 1) % 4;
// 取vunit数组下标
int vunitIndex = (headArray.length - i - 1) / 4;
// 如果循环到字符是一个0
if (headArray[i] == '0') {
// 把preZero置为true,同时zeroCount加1
preZero = true;
zeroCount++;
// 如果满足下面if中条件,则headStr加上vunit数组中对应的中文字符,同时把preZero置为false
if (hunitIndex == 0 && vunitIndex > 0 && zeroCount < 4) {
headStr = headStr + vunit[vunitIndex - 1];
preZero = false;
}
} else { // 当headArray[i]不等于0
zeroCount = 0;
// 如果preZero是true,表明该位是一个零,则headStr字符串加上"零",把preZero置为false
if (preZero) {
headStr = headStr + digit[0];
preZero = false;
}
// 根据循环到当前的字符,转换成数字,在digit数组中找到其对应的中文,例如字符串"1",转换成数字1,找到数组中digit[1]值'壹'
// 然后加入字符串headStr中
headStr = headStr + digit[Integer.parseInt(headArray[i] + "")];
// 如果hunitIndex大于0,则根据hunitIndex的数字减去1得到对应数字,该数字作为下标,找到hunit数组中对应的中文数字,
// 添加到headStr字符串中,
if (hunitIndex > 0) {
headStr = headStr
+ hunit[Integer.parseInt((hunitIndex - 1) + "")];
}
// 如果当hunitIndex等于0,同时vunitIndex大于0,则根据vunitIndex的值、数字减去1,该数字作为下标,
// 找到vunitIndex数组中对应的中文数字,添加到headStr字符串中
if (hunitIndex == 0 && vunitIndex > 0) {
headStr = headStr
+ vunit[Integer.parseInt((vunitIndex - 1) + "")];
}
}

}

// 加上单位
if (headStr.length() > 0) {
headStr = headStr + "圆";
}
// 返回部分最终转换成中文的数字
return headStr;
}

// 小数部分的处理
private static String handleFinall(String fina) {
String finaStr = "";
// 如果小数部分是两个0,则把加上一个“整”字,否则,小数点后一位加上“角”,小数后第二位加上“分”
if (fina.equals("00")) {
finaStr = "整";
} else {
finaStr = digit[Integer.parseInt(fina.charAt(0) + "")] + "角"
+ digit[Integer.parseInt(fina.charAt(0) + "")] + "分";
}
// 最终把小数部分的字符串返回
return finaStr;
}

}

金额转换,阿拉伯数字转换成中国传统形式。例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整相关推荐

  1. 金额转换,阿拉伯数字转换成中国传统形式。 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整

    金额转换,阿拉伯数字转换成中国传统形式. 例如:101000001010   转换为   壹仟零壹拾亿零壹仟零壹拾圆整 package com.itheima;import java.util.Arr ...

  2. 怎么实现金额转换,将阿拉伯数字金额转换成中国传统形式,例如1011变成一千零一拾一元整?

    public class Rmb{private static final char[] data = {'零','壹','贰','叄','肆','伍','陆','柒','捌','玖'};privat ...

  3. 金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-(一千零一拾一元整)输出。...

    程序代码如下: package cn.itcast.framework.interview;import java.text.NumberFormat; import java.util.HashMa ...

  4. java练习:金额转换,阿拉伯数字转换成中文传统形式

    需求:金额转换,阿拉伯数字转换成中文传统形式   ,例如 101000001010   转为     壹仟零壹拾亿零壹仟零壹拾圆整 最终版: import java.util.Scanner; pub ...

  5. 金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-(一千零一拾一元整)输出。

    /**  * @(#)SimpleMoneyFormat.java  *  *金额转换,阿拉伯数字的金额转换为中国传统的形式输出  * @lpxuan  * @version 1.00 2008/7/ ...

  6. 金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出

    去零的代码: return sb.reverse().toString().replaceAll("零[拾佰仟]","零").replaceAll(" ...

  7. 金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-(一千零一拾一元整)输出

    去零的代码: return sb.reverse().toString().replaceAll("零[拾佰仟]","零").replaceAll(" ...

  8. 如何将阿拉伯数字转换成RMB大写格式

    代码如下: /*** @author weigeli*/ public class Change {public static final String POINT = ".";p ...

  9. 金额转换,阿拉伯数字的金额转换为中国传统的形式。例如:327328.96 - 叁拾贰万柒仟叁佰贰拾捌元玖角陆分。

    /** 定义数组存放数字对应的大写 */ private final static String[] STR_NUMBER = {"零", "壹", " ...

最新文章

  1. python真的那么强大嘛-python强大吗
  2. 关于 SAP Spartacus defaultCmsContentProvider 和默认 layoutConfig 的一些测试
  3. 服务器装win10系统文档,Win10系统安装远程服务器管理的技巧
  4. 一文总结Java\JDK 17发布的新特性
  5. jfinal-swagger让你的应用接口更加简单
  6. python---01.名片管理系统
  7. 罗永浩推出新一代坚果手机,比AI亮眼的是AV能力
  8. 不确定中找到确定性, IBM开出哪些疫后企业数字化新处方?
  9. 基本了解云计算是什么东东了
  10. oracle ytd,hana ytd计算
  11. 我的jQuery学习之路_笔记(三)
  12. Python爬取各种类型网站数据(视频,图片居多)
  13. Thread创建线程
  14. 手动可以执行脚本,crontab执行失败,可能和环境变量有关(如果涉及到环境变量)
  15. 会计专业为什么要学python-财务人要学Python吗?
  16. CC26xx(CortexM3) Watchdog Timer
  17. LVGL8.2移植学习
  18. 2021.12- 参加第四届海淀区青少年科普科幻创作活动(一等奖)
  19. 豌豆荚取应用信息Api
  20. windows10+vm15+macos10.14虚拟黑苹果(amd-r5-4600版)(已解决客户机禁用cpu等问题)

热门文章

  1. 医师android,医师服务APP
  2. JAVA爬电信_基于JAVA的电信基站接口调用代码实例
  3. 项目前期管理的一种科学方法——可行性研究工作
  4. 什么是360°全景图片
  5. 【智能工厂】精工智能工厂规划;透明化车间典型案例呈现
  6. python数据类型转换
  7. Python(9)--列表·进阶使用
  8. FM, FTRL, Softmax
  9. 关于时间管理的一些技巧
  10. OpenVP*整合ldap认证