一个关于大写数字和阿拉伯数字的转换的java程序

要用java写一个大写人民币和小写数字之间的转换的程序,比如说“壹佰元整”转换为“100”,“123”转换成“壹佰贰拾叁元整”之类,但要包括所有情况哦!有没有哪位java高人可以帮忙解答一下?感激不尽~~

/**
* 目前只支持到万,和小数点后两位
*/
public class Test4{

private final char[] dRmb = {'零','壹','贰','参','肆','伍','陆','柒','捌','玖'};

private String getString(String str){
String[] s = this.getStringSplit(str);
if(s.length > 1){
//有小数点
int[] k1 = this.getInt(s[0]);
int[] k2 = this.getInt(s[1]);
String wei1 = this.getWei(s[0].length());
String wei2 = this.getWei(s[1].length());
String zhengShu = this.getZhengShu(wei1,k1);
String xiaoShu = this.getXiaoShu(s[1].length(),k2);
return zhengShu+xiaoShu;
}
else{
//没有小数点
int[] k = this.getInt(s[0]);
String wei = this.getWei(s[0].length());
return this.getZhengShu(wei,k);
}
}

private StringBuilder ling1(int[] k){
StringBuilder builder = new StringBuilder();
if(k[0] != 0)
builder.append(dRmb[k[0]]).append("角");
else
builder.append("");
return builder;
}

private StringBuilder ling2(int[] k){
StringBuilder builder = new StringBuilder();
if(k[0] == 0){
if(k[1] != 0)
builder.append(dRmb[k[0]]).append(dRmb[k[1]]).append("分");
else
builder.append("");
}
else{
if(k[1] != 0) builder.append(dRmb[k[0]]).append("角").append(dRmb[k[1]]).append("分");
else builder.append(dRmb[k[0]]).append("角");
}
return builder;
}

private String getXiaoShu(int length,int[] k){
if(length == 1){
return this.ling1(k).toString();
}
else if(length == 2){
return this.ling2(k).toString();
}
return null;
}

private StringBuilder shi(int[] k){
StringBuilder builder = new StringBuilder();
if(k[0] != 0){
if(k[1] != 0)
builder.append(dRmb[k[0]]).append("拾").append(dRmb[k[1]]).append("圆");
else
builder.append(dRmb[k[0]]).append("拾").append("圆");
}
else{
if(k[1] != 0)
builder.append(dRmb[k[1]]).append("圆");
else
builder.append("");
}
return builder;
}

private StringBuilder bai(int[] k){
StringBuilder builder = new StringBuilder();
if(k[0] != 0){//百位
if(k[1] != 0) //十位
if(k[2] != 0) //个位不为0
builder.append(dRmb[k[0]])
.append("佰")
.append(dRmb[k[1]])
.append("拾")
.append(dRmb[k[2]])
.append("圆");
else
builder.append(dRmb[k[0]]).append("佰").append(dRmb[k[1]]).append("拾").append("圆");
else
builder.append(dRmb[k[0]]).append("佰").append(dRmb[k[1]]).append(dRmb[k[2]]).append("圆");
}
else{
if(k[1] != 0)
if(k[2] != 0)
builder.append(dRmb[k[1]]).append("拾").append(dRmb[k[2]]).append("圆");
else
builder.append(dRmb[k[1]]).append("拾").append("圆");
else
builder.append(dRmb[k[2]]).append("圆");
}
return builder;
}

private StringBuilder qian(int[] k){
StringBuilder builder = new StringBuilder();
if(k[0] != 0){
if(k[1] != 0)
if(k[2] != 0)
if(k[3] != 0)
builder.append(dRmb[k[0]])
.append("仟")
.append(dRmb[k[1]])
.append("佰")
.append(dRmb[k[2]])
.append("拾")
.append(dRmb[k[3]])
.append("圆");
else
builder.append(dRmb[k[0]]).append("仟").append(dRmb[k[1]]).append("佰").append(dRmb[k[2]]).append("拾").append("圆");
else
builder.append(dRmb[k[0]]).append("仟").append(dRmb[k[1]]).append("佰").append(dRmb[k[2]]).append(dRmb[k[3]]).append("圆");
else
builder.append(dRmb[k[0]]).append("仟").append(dRmb[k[1]]).append(dRmb[k[2]]).append("拾").append(dRmb[k[3]]).append("圆");
}
else{
if(k[1] != 0)
if(k[2] != 0)
if(k[3] != 0)
builder.append(dRmb[k[1]]).append("佰").append(dRmb[k[2]]).append("拾").append(dRmb[k[3]]).append("圆");
else
builder.append(dRmb[k[1]]).append("佰").append(dRmb[k[2]]).append("拾").append("圆");
else
builder.append(dRmb[k[1]]).append("佰").append(dRmb[k[2]]).append(dRmb[k[3]]).append("圆");
else
builder.append(dRmb[k[2]]).append("拾").append("圆");
}
return builder;
}

private StringBuilder wan(int[] k){
StringBuilder builder = new StringBuilder();
if(k[0] != 0){
if(k[1] != 0)
if(k[2] != 0)
if(k[3] != 0)
if(k[4] != 0)
builder.append(dRmb[k[0]])
.append("万")
.append(dRmb[k[1]])
.append("仟")
.append(dRmb[k[2]])
.append("佰")
.append(dRmb[k[3]])
.append("拾")
.append(dRmb[k[4]])
.append("圆");
else
builder.append(dRmb[k[0]]).append("万").append(dRmb[k[1]]).append("仟").append(dRmb[k[2]]).append("佰").append(dRmb[k[3]]).append("拾").append("圆");
else
builder.append(dRmb[k[0]]).append("万").append(dRmb[k[1]]).append("仟").append(dRmb[k[2]]).append("佰").append(dRmb[k[3]]).append(dRmb[k[4]]).append("圆");
else
builder.append(dRmb[k[0]]).append("万").append(dRmb[k[1]]).append("仟").append(dRmb[k[2]]).append(dRmb[k[3]]).append("拾").append(dRmb[k[4]]).append("圆");
else
builder.append(dRmb[k[0]]).append("万").append(dRmb[k[1]]).append(dRmb[k[2]]).append("佰").append(dRmb[k[3]]).append("拾").append(dRmb[k[4]]).append("圆");
}
else{
if(k[1] != 0)
if(k[2] != 0)
if(k[3] != 0)
if(k[4] != 0)
builder.append(dRmb[k[1]]).append("仟").append(dRmb[k[2]]).append("佰").append(dRmb[k[3]]).append("拾").append(dRmb[k[4]]).append("圆");
else
builder.append(dRmb[k[1]]).append("仟").append(dRmb[k[2]]).append("佰").append(dRmb[k[3]]).append("拾").append("圆");
else
builder.append(dRmb[k[1]]).append("仟").append(dRmb[k[2]]).append("佰").append(dRmb[k[3]]).append(dRmb[k[4]]).append("圆");
else
builder.append(dRmb[k[1]]).append("仟").append(dRmb[k[2]]).append(dRmb[k[3]]).append("拾").append(dRmb[k[4]]).append("圆");
else
builder.append(dRmb[k[2]]).append("佰").append(dRmb[k[3]]).append("拾").append(dRmb[k[4]]).append("圆");
}
return builder;
}

private String getZhengShu(String wei,int[] k){
StringBuilder builder = new StringBuilder();
if(wei != null){
if(wei.equals("拾")){
return shi(k).toString();
}
else if(wei.equals("佰")){
return bai(k).toString();
}
else if(wei.equals("仟")){
return qian(k).toString();
}
else if(wei.equals("万")){
return wan(k).toString();
}
}
else{
builder.append(dRmb[k[0]])
.append("圆");
return builder.toString();
}
return null;
}

private String getWei(int length){
if(length == 2) return "拾";
else if(length == 3) return "佰";
else if(length == 4) return "仟";
else if(length == 5) return "万";
return null;
}

//将字符串转换成int数组
private int[] getInt(String s){
char[] ch = s.toCharArray();
int[] j = new int[s.length()];
for (int i = 0; i<ch.length; i++) {
j[i] = Integer.parseInt(String.valueOf(ch[i]));
}
return j;
}

private String[] getStringSplit(String s){
String[] s1 = s.split("\\.");
return s1;
}

public static void main(String[] args){
Test4 t = new Test4();
System.out.println (t.getString("23450.09"));
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-11
最简单的..
public class T {
public static void main(String[] args) {
zhuanhuan(10001101);
}
private static void zhuanhuan(int s) {
String[] c = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
String[] d = { "元", "拾", "百", "仟", "万","拾万","百万","千万","亿" };
String ss = s + "";//数字强行转换成字符串
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < ss.length(); i++) {
String k = ss.substring(i, i + 1);
int f = Integer.parseInt(k);
if (f == 0) {
int u = Integer.parseInt(ss.substring(i - 1, i));
if (u != 0) {
buffer.append(c[0]);
}
} else {
buffer.append(c[f]);
buffer.append(d[ss.length() - i - 1]);
}
}
System.out.println(buffer.toString());
}
}
第2个回答  2009-11-02
这个,相当于一个小项目了,主要用到switch判定和正则表达式,只能提供给你思路了,具体代码实现我倒是有也能实现,不过思路可能被公司已有代码左右思维,弄不好涉及到职业道德了,所以。。。
你可以上网找找银行金额转换相关内容,如果你找到了,可不是我泄密哦!本回答被提问者采纳
第3个回答  2009-11-01
“一仟壹百九十元正”这怎么办?
第4个回答  2009-11-02
我觉得正则表达式是一个思路

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网