金额转换,阿拉伯数字的金额转换成中国传统的形式 如: (¥1011)->(一千零一拾一元整)输出 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://topic.csdn.net/u/20080309/02/9f514ec2-a946-483d-8cde-12e0aefa60b0.html 最近问这个真多前几天刚写过个http://topic.csdn.net/u/20080908/22/91c8a9a8-2405-4ed2-952e-a14ac4443021.html public class test{ String bignum[] = {"零","一","二","三","四","五","六","七","八","久"}; String sign1[] = {"","十","百","千"}; String sign2[] = {"圆","万","亿","兆"}; String sign3[] = {"角","分","厘"}; test(String s){ s = s.replaceFirst("^0+",""); int pt = s.indexOf("."); if(pt<0) s = parta(s); else s = parta(s.substring(0,pt))+partb(s.substring(pt+1)); System.out.println(s); } String parta(String s){ int[] number = new int[s.length()]; for(int i=0;i<s.length();i++) number[s.length()-1-i] = Integer.parseInt(i==s.length()-1?s.substring(i):s.substring(i,i+1)); s = ""; for(int i=number.length-1;i>=0;i--){ s+=bignum[number[i]]; s+=i%4==0?sign2[i/4]:number[i]>0?sign1[i%4]:""; } while(s.indexOf("零零")!=-1) s=s.replaceFirst("零零","零"); for(int i=0;i<sign1.length;i++) while(s.indexOf("零"+sign2[i])!=-1) s=s.replaceFirst("零"+sign2[i],sign2[i]); for(int i=sign2.length-1;i>0;i--) while(s.indexOf(sign2[i]+sign2[i-1])!=-1) s=s.replaceFirst(sign2[i]+sign2[i-1],sign2[i]); return s; } String partb(String s){ int[] number = new int[s.length()]; for(int i=0;i<s.length();i++) number[s.length()-1-i] = Integer.parseInt(i==s.length()-1?s.substring(i):s.substring(i,i+1)); s = ""; for(int i=number.length-1;i>=0;i--) if(number[i]>0) s += bignum[number[i]]+sign3[number.length-i-1]; return s; } public static void main(String args[]){ new test(args[0]); }} public class StringUtil{ static char [] chineseNumber = {'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'}; static char [] unitName = {' ','拾','佰','仟'}; public static String toChinese(String numberStr) { StringBuffer rs = new StringBuffer(); String theFloat = null; int dotPos = numberStr.indexOf("."); if (dotPos != -1) { theFloat = "点"; String floatPart = numberStr.substring(dotPos + 1); numberStr = numberStr.substring(0,dotPos); for (int i = 0; i < floatPart.length(); i++) { theFloat += chineseNumber[floatPart.charAt(i) - '0']; } } int cycleCount = 0; boolean skip = true; for (int i = numberStr.length() - 1; i >= 0; i--) { if (cycleCount == 4) { rs.append("万"); } else if (cycleCount == 8) { rs.append("亿"); cycleCount = 0; } int num = (int)(numberStr.charAt(i) - '0'); if (num > 0) { rs.append(unitName[cycleCount % 4]); if (skip) { skip = false; } } if (!skip) { rs.append(chineseNumber[num]); } cycleCount++; } int len = rs.length(); StringBuffer sb = new StringBuffer(); for (int i = len - 1; i >= 0; i--) { char c = rs.charAt(i); if (c == ' ') { continue; } sb.append(c); } if (theFloat != null) { sb.append(theFloat); } return sb.toString(); }} javaSE的弹出窗口问题 jcreator pro 4.0中文显示乱码问题 问一个关于扫描Iterator容器中的status属性的问题,谢谢~ 菜鸟提问 给分了啊 jdk1.5编译出现错误提示是中文的? 一个语句不太理解! 请问,java表达式有类型,怎么理解???? 求教:如何实现图形的放大与缩小 如何实现改变按钮上的文字? 求大佬指点。。Swing 为什么类中定义的属性直接赋值与在方法中赋值会有不同 java.lang.Runtime.getRuntime 为什么执行不了啊
前几天刚写过个
http://topic.csdn.net/u/20080908/22/91c8a9a8-2405-4ed2-952e-a14ac4443021.html
public class test{
String bignum[] = {"零","一","二","三","四","五","六","七","八","久"};
String sign1[] = {"","十","百","千"};
String sign2[] = {"圆","万","亿","兆"};
String sign3[] = {"角","分","厘"};
test(String s){
s = s.replaceFirst("^0+","");
int pt = s.indexOf(".");
if(pt<0)
s = parta(s);
else
s = parta(s.substring(0,pt))+partb(s.substring(pt+1));
System.out.println(s);
}
String parta(String s){
int[] number = new int[s.length()];
for(int i=0;i<s.length();i++)
number[s.length()-1-i] = Integer.parseInt(i==s.length()-1?s.substring(i):s.substring(i,i+1));
s = "";
for(int i=number.length-1;i>=0;i--){
s+=bignum[number[i]];
s+=i%4==0?sign2[i/4]:number[i]>0?sign1[i%4]:"";
}
while(s.indexOf("零零")!=-1)
s=s.replaceFirst("零零","零");
for(int i=0;i<sign1.length;i++)
while(s.indexOf("零"+sign2[i])!=-1)
s=s.replaceFirst("零"+sign2[i],sign2[i]);
for(int i=sign2.length-1;i>0;i--)
while(s.indexOf(sign2[i]+sign2[i-1])!=-1)
s=s.replaceFirst(sign2[i]+sign2[i-1],sign2[i]);
return s;
}
String partb(String s){
int[] number = new int[s.length()];
for(int i=0;i<s.length();i++)
number[s.length()-1-i] = Integer.parseInt(i==s.length()-1?s.substring(i):s.substring(i,i+1));
s = "";
for(int i=number.length-1;i>=0;i--)
if(number[i]>0)
s += bignum[number[i]]+sign3[number.length-i-1];
return s;
}
public static void main(String args[]){
new test(args[0]);
}
}
{
static char [] chineseNumber = {'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
static char [] unitName = {' ','拾','佰','仟'}; public static String toChinese(String numberStr)
{
StringBuffer rs = new StringBuffer();
String theFloat = null;
int dotPos = numberStr.indexOf(".");
if (dotPos != -1)
{
theFloat = "点";
String floatPart = numberStr.substring(dotPos + 1);
numberStr = numberStr.substring(0,dotPos);
for (int i = 0; i < floatPart.length(); i++)
{
theFloat += chineseNumber[floatPart.charAt(i) - '0'];
}
}
int cycleCount = 0;
boolean skip = true;
for (int i = numberStr.length() - 1; i >= 0; i--)
{
if (cycleCount == 4)
{
rs.append("万");
}
else if (cycleCount == 8)
{
rs.append("亿");
cycleCount = 0;
}
int num = (int)(numberStr.charAt(i) - '0');
if (num > 0)
{
rs.append(unitName[cycleCount % 4]);
if (skip)
{
skip = false;
}
}
if (!skip)
{
rs.append(chineseNumber[num]);
}
cycleCount++;
}
int len = rs.length();
StringBuffer sb = new StringBuffer();
for (int i = len - 1; i >= 0; i--)
{
char c = rs.charAt(i);
if (c == ' ')
{
continue;
}
sb.append(c);
}
if (theFloat != null)
{
sb.append(theFloat);
}
return sb.toString();
}
}