人民币,大写中文与数字之间转换
2017-05-21 20:56
330 查看
例:
输入: 8.2
输出: 八元二角
输入: 8.2
输出: 八元二角
import java.util.Scanner; public class RMBTest { public static void main(String[] args) { Scanner scan=new Scanner(System.in); while (scan.hasNext()) { RMB r=new RMB(scan.next()); r.show(); } } } class RMB { private String num[]={"零","一" ,"二" ,"三" ,"四" ,"五" ,"六" ,"七" ,"八" ,"九"}; private String unit[]={"厘","分","角","","十","百","千"}; private String a=""; private String b=""; boolean isZero=false; public RMB(String money) { int i=0; for(;i<money.length()&&money.charAt(i)!='.';i++) { a=a+money.charAt(i); } while(++i<money.length()) { b=b+money.charAt(i); } } public String divideByInteger() { String answer=""; if(!a.equals("0")) { answer=answer+ devideByHM(a)+"元"; } if(!b.equals("")) { answer=answer + small(); } return answer; } public String small() { String answer=""; int n=2; boolean isZero=false; boolean firstZero=(b.charAt(0)=='0'&&a.equals("0")?true:false); for(int i=0;n-i>=0&&i<b.length();i++) { if(b.charAt(i)=='0') { isZero=true; continue; } if(isZero&&!firstZero) { answer=answer+num[0]+num[b.charAt(i)-'0']+unit[n-i]; isZero=false; } else { answer=answer+num[b.charAt(i)-'0']+unit[n-i]; } } return answer; } public String devideByHM(String a) { String answer=""; if(a.length()>8) { answer=answer+ devideByTS(a.substring(0,a.length()-8))+"亿"; if(a.substring(a.length()-8,a.length()).charAt(0)=='0')isZero=true; answer=answer+ devideByTS(a.substring(a.length()-8,a.length())); } else { answer=answer+ devideByTS(a); } return answer; } public String devideByTS(String a) { String answer=""; if(a.length()>4&&!allZero(a.substring(0,a.length()-4))) { answer=answer+ devideByThousand(a.substring(0,a.length()-4))+"万"; if(a.substring(a.length()-4,a.length()).charAt(0)=='0')isZero=true; answer=answer+ devideByThousand(a.substring(a.length()-4,a.length())); } else { answer=answer+ devideByThousand(a.substring(/*a.length()-4*/0,a.length())); } return answer; } public String devideByThousand(String a) { String answer=""; int unitStart=3; int unitEnd=6; for(int i=0;unitEnd-i>=unitStart&&i<a.length();i++) { if(a.charAt(i)=='0') { isZero=true; continue; } if(isZero) { answer=answer+num[0]+num[a.charAt(i)-'0']+unit[unitStart-1+a.length()-i]; isZero=false; } else { answer=answer+num[a.charAt(i)-'0']+unit[unitStart-1+a.length()-i]; } } return answer; } private boolean allZero(String a) { for(int i=0;i<a.length();i++) { if(a.charAt(i)!='0')return false; } return true; } public void show() { System.out.println(divideByInteger()); } }
相关文章推荐
- 把人民币数字转换成中文大写
- C# 人民币大小写转换,将阿拉伯数字转换为中文的大写人民币
- 将阿拉伯数字转换成中文大写人民币
- 将一串数字转化为中文字符串,使用 C# 将数字转换成大写人民币 (例如:用户输入2300,系统就会显示两千三百元 )
- 将人民币数字转换为中文大写
- (转)C# 人民币大小写转换,将阿拉伯数字转换为中文的大写人民币
- 数字转换成中文人民币大写
- PHP中实现数字金额到中文大写字符的转换
- 一个将阿拉伯数字转换成中文大写的最简单算法
- 将阿拉伯数字转换成中文大写的好算法
- 使用C#实现阿拉伯数字到大写中文的转换-第二种方法
- ABAP--将数字金额转换为人民币大写字符串(增加UNICODE版本)
- 小写数字转换为中文大写的最完整C#方案
- 一个将阿拉伯数字转换成中文大写的算法[C#]
- 一个水晶报表的数字转换成中文大写的公式!
- Excel日期转换为大写中文数字
- 将数字金额转换为中文大写金额(在网上找的)
- C#实现的【阿拉伯数字转换成中文大写金额】代码(原创)
- Java中实现数字金额到中文大写字符的转换!!
- 将中文大写数字(从一到九十九)转换为阿拉伯数字