数字转大写程序

最近看到很多人都问 如何写一个数字转大写的程序,也就是把"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;
                            }

                    }

                
            }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值