将金额变为中文阅读格式 金额转换为文字

今天面试。给了我一个面试题

 

将金额变为文字

 

 

 

 

 

package com.howbuy;
/**
 * 转换 金额
 * @author SHUHIYUN
 *
 */
public class HowBuy {
 private String result1;
 private String result2;
 String[] a = {"零","一","二","三","四","五","六","七","八","九"};
 String[] b={"十","百","千"};
 String[] c={"万","亿"};
 
 public String[] spilitByPoint(String number) throws Exception {
  String[] num=null;
  try{
   Double.valueOf(number).toString();
   
  }catch(Exception e ){
   throw new Exception("不是数字");
  }
  try{
   num=number.split("//.");
  }catch(Exception e ){
  }
  
  num[0]=Integer.valueOf(num[0]).toString();
  if(num==null||num.length==0){
   throw new Exception ("");
  }
  return num;
 }
 public String execute(String number)throws Exception{
  String[] temp = spilitByPoint(number);
     executeMoney1(temp[0]);
     try{
      if(temp[1]==null){
         executeMoney2(null);
      }else {
       executeMoney2(temp[1]);
      }
     }catch(Exception e ){
       executeMoney2(null);
     }
  
     return this.result1+this.result2;
    
 }
 
 public void executeMoney2(String number)throws Exception{
   if(number==null){
    this.result2="元整";
   }else{
    this.result2="元";
    this.result2 = this.result2+ a[Integer.valueOf(number.substring(0,1))]+"角";
    try{
     if(Integer.valueOf(number.substring(1,2))!=0){
      this.result2 = this.result2+ a[Integer.valueOf(number.substring(1,2))]+"分";;
     }
    }catch(Exception e){
     e.printStackTrace();
    }
   
   }
 }
 public void executeMoney1(String number)throws Exception{
   if(Integer.parseInt(number)<10){
    this.result1=executeG(number);
   }
   else if(Integer.parseInt(number)<100){
    this.result1=executeS(number);
   }
   else if(Integer.parseInt(number)<1000){
    this.result1=executeB(number);
   }
   else if(Integer.parseInt(number)<10000){
    this.result1=executeQ(number);
   } else {
    if(Integer.parseInt(number)<100000000){
     this.result1=executeSW(number);
    } else
     this.result1=executeYI(number);
   
   }
  
 }
  
  private String executeW(String number) {
   String temp = a[Integer.parseInt(number.substring(0,1))]+b[2];
   if(Integer.parseInt(number.substring(1))>=100){
    temp+=executeQ(number.substring(1));
   }else if(Integer.parseInt(number.substring(1))>10){
    temp+=executeB(number.substring(1));
   }else{
    if(Integer.parseInt(number.substring(2))!=0){
     if(Integer.parseInt(number.substring(1))>10)
      temp+=a[Integer.parseInt(number.substring(2))];
     else temp+=a[0]+a[Integer.parseInt(number.substring(2))];
    }
    
   }
   return temp;
   
 }
 // private String  executeT(String number){
//  String temp =null;
//  try{
//   if(Integer.parseInt(number)<10){
//    temp=a[Integer.parseInt(number)];
//   }else if(Integer.parseInt(number)<100){
//    temp  = a[Integer.parseInt(number.substring(0,1))]+b[1];
//    if(Integer.parseInt(number.substring(1,2))!=0){
//     temp+= a[Integer.parseInt(number.substring(1,2))];
//    }
//   }else if(Integer.parseInt(number)<1000){
//    temp  = a[Integer.parseInt(number.substring(0,1))]+b[2];
//    if(Integer.parseInt(number.substring(1,2))!=0){
//     temp+= a[Integer.parseInt(number.substring(1,2))];
//    }
//   }else if(Integer.parseInt(number)<10000){
//    temp  = a[Integer.parseInt(number.substring(0,1))]+b[3];
//   }
//  }catch(Exception e ){
//   e.printStackTrace();
//  }
//  return temp;
// }
 private String  executeG(String number){//ge
  return a[Integer.parseInt(number)];
 }
 private String executeS(String number){//shi
  String temp = a[Integer.parseInt(number.substring(0,1))]+b[0];
  if(Integer.parseInt(number.substring(1))!=0){
   temp+=a[Integer.parseInt(number.substring(1))];
  }
  return temp;
 }
 private String executeB(String number){//bai
  String temp = a[Integer.parseInt(number.substring(0,1))]+b[1];
  if(Integer.parseInt(number.substring(1))>=10)
    temp+=executeS(number.substring(1));
  else if(Integer.parseInt(number.substring(1))!=0){
   temp+=a[0]+executeG(number.substring(1));
  }
  return temp;
 }
 private String executeQ(String number){
  String temp = a[Integer.parseInt(number.substring(0,1))]+b[2];
  if(Integer.parseInt(number.substring(1))>=100){
   temp+=executeB(number.substring(1));
  }else if(Integer.parseInt(number.substring(1))>=10){
   temp+=a[0]+executeS(number.substring(2));
  }else{
   if(Integer.parseInt(number.substring(2))!=0){
    if(Integer.parseInt(number.substring(1))>10)
     temp+=a[Integer.parseInt(number.substring(2))];
    else temp+=a[0]+a[Integer.parseInt(number.substring(2))];
   }
   
  }
  return temp;
 }
 private String executeSW(String number){
  String shiwang= number.substring(0,number.length()-4);
  String temp ="";
  if(Integer.parseInt(shiwang)<10){
   temp=this.executeG(shiwang);
  }else if(Integer.parseInt(shiwang)<100){
   temp=this.executeS(shiwang);
  }
  else if(Integer.parseInt(shiwang)<1000){
   temp=this.executeB(shiwang);
  }else if(Integer.parseInt(shiwang)<10000){
   temp=this.executeQ(shiwang);
  }
  
  temp+=c[0];
  String qian=number.substring(number.length()-4);
  if(Integer.parseInt(qian)>=1000)
   temp+=executeQ(qian);
  else if(Integer.parseInt(qian)>=100){
   temp+=a[0]+executeB(qian.substring(1));
  }else if(Integer.parseInt(qian)>=10){
   temp+=a[0]+executeS(qian.substring(2));
  }else if(Integer.parseInt(qian)>0){
   temp+=a[0]+executeG(qian.substring(3));
  }
  return temp;
 }
 private String executeYI(String number) {// yi
  String yibufeng = number.substring(0,number.length()-8);
  String temp ="";
  if(Integer.parseInt(yibufeng)<10){
   temp=this.executeG(yibufeng);
  }else if(Integer.parseInt(yibufeng)<100){
   temp=this.executeS(yibufeng);
  }
  else if(Integer.parseInt(yibufeng)<1000){
   temp=this.executeB(yibufeng);
  }else if(Integer.parseInt(yibufeng)<10000){
   temp=this.executeQ(yibufeng);
  }
  
  temp+=c[1];
  String wang=number.substring(number.length()-8);
//  if(Integer.parseInt(number.substring(number.length()-8,number.length()-7))==0){
//   temp+=a[0];
//  }
  if(Integer.parseInt(wang)>=10000){
   temp+=this.executeSW(Integer.toString(Integer.parseInt(wang)));
  }else if(Integer.parseInt(wang)>=1000)
   temp+=a[0]+executeQ(Integer.toString(Integer.parseInt(wang)));
  else if(Integer.parseInt(wang)>=100){
   temp+=a[0]+executeB(Integer.toString(Integer.parseInt(wang)));
  }else if(Integer.parseInt(wang)>=10){
   temp+=a[0]+executeS(Integer.toString(Integer.parseInt(wang)));
  }else if(Integer.parseInt(wang)>0)temp+=a[0]+executeG(Integer.toString(Integer.parseInt(wang)));
  return temp;
  
}
 
 
 public static void main(String[] a ){
//  String number = "200010090";
  HowBuy howBuy = new HowBuy();
//  try{
//   System.out.print(howBuy.execute(number));
//  }catch(Exception e ){
//   e.printStackTrace();
//  }
  try{
   int j=0;
   for(int i=1;i<11;i++){
    for(;j<1000;){
     String  temp = Integer.valueOf(i*j).toString();
     System.out.println(temp+":"+howBuy.execute(temp+".13"));
     j=j+1;
    }
   }
  }catch(Exception e ){
   e.printStackTrace();
  }
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值