java实现的钱币大写转换程序(10万亿以内,可以扩展)

package  com.test;

/**
 *  All Rights Reserved@2006-2007
 * Author: HallyWang
 * Date: 2007-3-16
 * Time: 16:40:42
 * Modifier:HallyWang
 * Modify Date&Time: 2007-3-16 16:40:42
 
*/



public   class  conNumToUpperCN  {


    
public conNumToUpperCN() {

    }


    
public static String convertToUpperCN(String number) {
        String resultString 
= "";
        
try {

            String[] unit 
= {"""""""""""""""""""""亿"""""""""};//单位

            String[] numberCN 
= {""""""""""""""""""""};  //0-9中文对应
            int point = number.indexOf(".");
            
if (point == -1//没有小数部分
                String numStr = number;
                
int len = numStr.length();
                
if (len > 13{
                    
return "请输入10万亿以下数字";
                }

                
for (int i = 0; i < len; i++{
                    
int j = Integer.parseInt(numStr.substring(len - 1 - i, len - i)); //得到每一位数  (个位--〉最高位)
                    resultString = numberCN[j] + unit[2 + i] + resultString; //从数组从取出其中文对应大写,以及单位
                    numStr = numStr.substring(0, len - 1 - i);

                }

            }
 else //有小数部分
                String numStr = number.substring(0, point);
                String last 
= number.substring(point + 1);
                
int len = numStr.length();
                
if (len > 13{
                    
return "请输入10万亿以下数字";
                }

                
int lenlast = last.length();
                
//使小数点后面只精确到角分
                if (lenlast > 2{
                    lenlast 
= 2;
                    last 
= last.substring(02);
                }

                
if (lenlast < 2{
                    lenlast 
= 2;
                    last 
= last + "0";
                }


                
//得到角分
                for (int k = 0; k < lenlast; k++{
                    
int p = Integer.parseInt(last.substring(lenlast - 1 - k, lenlast - k));
                    resultString 
= numberCN[p] + unit[k] + resultString;
                    last 
= last.substring(0, lenlast - 1 - k);
                }

                
//得到整数
                for (int i = 0; i < len; i++{
                    
int j = Integer.parseInt(numStr.substring(len - 1 - i, len - i));

                    resultString 
= numberCN[j] + unit[(2 + i)] + resultString;
                    numStr 
= numStr.substring(0, len - 1 - i);
                }

            }

        }
 catch (Exception e) {
            e.printStackTrace();
        }


        resultString 
= resultString.replaceAll("零扦""");
        resultString 
= resultString.replaceAll("零佰""");
        resultString 
= resultString.replaceAll("零拾""");
        resultString 
= resultString.replaceAll("零万""");

        
while (resultString.indexOf("零零"> 0{
            resultString 
= resultString.replaceAll("零零""");
        }

        resultString 
= resultString.replaceAll("零亿""亿");
        
//防止类似零扦、零百等的出现
        return resultString;
    }

}

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值