数字转大写程序

来源:互联网 发布:mac企业邮箱登陆界面 编辑:程序博客网 时间:2024/04/30 11:24

最近看到很多人都问 如何写一个数字转大写的程序,也就是把"123456789"转为 壹亿贰千叁百肆十伍万陆千柒百捌十玖 的程序,很多人都只提供代码,不提供解释,我这里自己也写了一个,有不足之处请大家提出:

 

import java.io.*;
class upper{
    
public static void main(String[] args) throws IOException{
        String[] big
=new String[]{"","","","","","","","","","",""};
        String[] bit
=new String[]{"","","","","","十万","百万","千万","亿"};
        BufferedReader br
=new BufferedReader(new InputStreamReader(System.in));
        System.out.print(
"请输入要转换的数字:");
        String rl
=br.readLine();
        
//取数字的位数
        int weishu=rl.length() ;
                
if(weishu>9){
                    System.out.println(
"超出计算范围");
                    }

        
//创建StringBuffer 来存储结果
        StringBuffer result=new StringBuffer();
        
        
//把数字转换成StringBuffer
        StringBuffer sb=new StringBuffer(rl);
        
//反转数字
        sb=sb.reverse();
        
//再转换成int
        int rl1=sb2int(sb);
                    
//建立循环
                    for(int i=0;i<rl.length();i++){    
                            
//数字取余数 %10
                            int tmp2=rl1%10;
                            
//数字减去最后一位
                            rl1-=tmp2;    
                            
//数字除以10
                            rl1=rl1/10;
                            
//位数减1
                            weishu-=1;
                            
//存到结果里
                            result=result.append(big[tmp2]+bit[weishu]);
                        }

        System.out.print(
"输出大写为:");
        String rs
=result.toString();
        System.out.println(prossstr(rs));
}

        
//静态方法,把StringBuffer转换成Int
          static int sb2int(StringBuffer sb){
            String tmp
=new String(sb);
            
int tmp2=Integer.parseInt(tmp);
            
return tmp2;
            }

            
//处理结果
            static String prossstr(String result){
                
//处理万到亿之间的数
                int lg=result.length();
                
if(lg!=0&&lg>9&&lg<19){
                    result
=result.replaceAll("","");
                    StringBuffer sbresult
=new StringBuffer(result);
                    sbresult
=sbresult.reverse();
                    sbresult
=sbresult.insert(7,'');
                    sbresult
=sbresult.reverse();
                    
return sbresult.toString();
                    
//处理亿以上
                }
else if(lg!=0&&lg>19){
                    result
=result.replaceAll("","");
                    result
=result.replaceAll("亿","");
                    StringBuffer sbresult
=new StringBuffer(result);
                    sbresult
=sbresult.reverse();
                    sbresult
=sbresult.insert(7,'');
                    sbresult
=sbresult.insert(15,'亿');
                    sbresult
=sbresult.reverse();
                    
return sbresult.toString();
                        }

                        
else{
                            
return result;
                            }

                    }

                
            }

原创粉丝点击