博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阿拉伯数字 转 汉字大写
阅读量:4339 次
发布时间:2019-06-07

本文共 1998 字,大约阅读时间需要 6 分钟。

参考 算法的乐趣

阿拉伯数字 转 汉字大写   如 123 > 壹佰贰拾叁

思路:

如:a = 123,1234,1200    

按权位分为 {"","拾","佰","仟"},

按节权位分{"","万","亿","万亿"}

1.将 a 按4位分隔,循环每个分隔,通过位移确定权位,进行转换中文。

然后确定每个分隔后的节权位。

注意对0的转换:

1.10000 不取零

2.1001 取一个零

3.01不取零

 

如下:

 

1 package algo; 2  3 public class NumToCh { 4     static String  [] chnChar = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; 5     //权位 6     static String [] chnUnit = {"","拾","佰","仟"}; 7     //节权位 8     static String [] chnUnitSec = {"","万","亿","万亿"}; 9     10     public static void main(String[] args) { 11 String a = "11120"; 12 String b = "0011120";//001,1120 13 String c = "111002";// 11,1002 14 String d = "11102"; 15  System.out.println(numberTochn(a)); 16  System.out.println(numberTochn(b)); 17  System.out.println(numberTochn(c)); 18  System.out.println(numberTochn(d)); 19 20  } 21 22 private static String numberTochn(String numScan){ 23 int num = Integer.parseInt(numScan); 24 StringBuffer chn = new StringBuffer(); 25 int unitPos = 0; 26 boolean zero = true; 27 while(num>0){ 28 int section = num%10000; 29 if(!zero){ 30 chn.insert(0, chnChar[0]); 31  } 32 //将section转中文 33 String ch = numberToChar(section); 34 //加 节权位 35 if(section!=0){ 36 ch += (chnUnitSec[unitPos]); 37  } 38 chn.insert(0, ch); 39 //千字节为0,需要在下一个 section补零 40 if(section<1000&&section>0){ 41 zero = false; 42  } 43 //节权位对应的下标 44 unitPos++; 45 //移位下一个 46 num = num/10000; 47  } 48 49 return chn.toString(); 50  } 51 //将数字转换为中文 52 private static String numberToChar(int section) { 53 StringBuffer chn = new StringBuffer(); 54 boolean zero = true; 55 int unitPos = 0 ; 56 while(section>0){ 57 int v = section%10; 58 if(v==0){ 59 //zero控制零(必须判断有数字后,才输入零(01),并且多个连续的0只取一个(0000)) 60 if(!zero){ 61 zero = true; 62 chn.insert(0, chnChar[v]); 63  } 64 }else{ 65 zero = false; 66 String s = chnChar[v] + //转字符 67 chnUnit[unitPos];//权位 68 chn.insert(0,s); 69  } 70 //移位下标 71 unitPos++; 72 //移位下个 73 section = section/10; 74  } 75 return chn.toString(); 76 77  } 78 79 80 }

 

转载于:https://www.cnblogs.com/GotoJava/p/7435239.html

你可能感兴趣的文章
IOS 杂笔-14(被人遗忘的owner)
查看>>
自动测试用工具
查看>>
前端基础之BOM和DOM
查看>>
[T-ARA/筷子兄弟][Little Apple]
查看>>
编译Libgdiplus遇到的问题
查看>>
【NOIP 模拟赛】Evensgn 剪树枝 树形dp
查看>>
java学习笔记④MySql数据库--01/02 database table 数据的增删改
查看>>
两台电脑如何实现共享文件
查看>>
组合模式Composite
查看>>
程序员最想得到的十大证件,你最想得到哪个?
查看>>
我的第一篇CBBLOGS博客
查看>>
【MyBean调试笔记】接口的使用和清理
查看>>
07 js自定义函数
查看>>
jQueru中数据交换格式XML和JSON对比
查看>>
form表单序列化后的数据转json对象
查看>>
[PYTHON]一个简单的单元測试框架
查看>>
iOS开发网络篇—XML数据的解析
查看>>
[BZOJ4303]数列
查看>>
一般处理程序在VS2012中打开问题
查看>>
C语言中的++和--
查看>>