zoukankan      html  css  js  c++  java
  • java 将一个正整数翻译成人民币大写的读法

            程序如下:

      

      1 import java.lang.StringBuffer;
      2 /**
      3 给定一个浮点数,将其装换成人民币大写的读法
      4 88.5:捌十捌元零伍角
      5 */
      6 public class Num2Rmb 
      7 {
      8     private String[] hanArr={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
      9     
     10     //将一个浮点数分解成整数部分和小数部分,小数部分保留两位小数
     11     private String[] divide(double num)
     12     {
     13         long zheng=(long)num;
     14         long xiao=Math.round((num-zheng)*100);
     15         return new String[]{zheng+"",String.valueOf(xiao)};
     16     }
     17 
     18 
     19     private String toHanStr(String numStr)
     20     {
     21         String str="";
     22         //先转换正数
     23         int numLen=numStr.length();
     24         if(numLen>9)
     25         {
     26             System.out.println("输入的浮点数的正数部分的长度不能超过9,最大为9.");
     27             return "";
     28         }
     29         for(int i=0;i<numLen;i++)
     30         {
     31             int number= numStr.charAt(i)-48;
     32             str+=hanArr[number];
     33         }
     34         //给正数部分添加单位
     35         /**
     36         1 2 3 4 5 6 7 8 9
     37         1亿2千3百4十5万6千7百8十9
     38         */
     39         String[] unit=new String[]{"亿","千","百","十","万"};
     40         String newStr="";
     41         switch(numLen)
     42         {
     43             case 9:
     44                 for(int i=0;i<numLen;i++)
     45                 {
     46                     //取字符
     47                     char ch=str.charAt(i);
     48                     if(i==0)
     49                         newStr+=ch+unit[0];
     50                     if(i==1)
     51                         newStr+=ch+unit[1];
     52                     if(i==2)
     53                         newStr+=ch+unit[2];
     54                     if(i==3)
     55                         newStr+=ch+unit[3];
     56                     if(i==4)
     57                         newStr+=ch+unit[4];
     58                     if(i==5)
     59                         newStr+=ch+unit[1];
     60                     if(i==6)
     61                         newStr+=ch+unit[2];
     62                     if(i==7)
     63                         newStr+=ch+unit[3];
     64                     if(i==8)
     65                         newStr+=ch;
     66                 }
     67                 break;
     68             case 8://12345678
     69                 for(int i=0;i<numLen;i++)
     70                 {
     71                     //取字符
     72                     char ch=str.charAt(i);
     73                     if(i==0)
     74                         newStr+=ch+unit[1];
     75                     if(i==1)
     76                         newStr+=ch+unit[2];
     77                     if(i==2)
     78                         newStr+=ch+unit[3];
     79                     if(i==3)
     80                         newStr+=ch+unit[4];
     81                     if(i==4)
     82                         newStr+=ch+unit[1];
     83                     if(i==5)
     84                         newStr+=ch+unit[2];
     85                     if(i==6)
     86                         newStr+=ch+unit[4];
     87                     if(i==7)
     88                         newStr+=ch;
     89                 }
     90                 break;
     91             case 7://1234567
     92                 for(int i=0;i<numLen;i++)
     93                 {
     94                     //取字符
     95                     char ch=str.charAt(i);
     96                     if(i==0)
     97                         newStr+=ch+unit[2];
     98                     if(i==1)
     99                         newStr+=ch+unit[3];
    100                     if(i==2)
    101                         newStr+=ch+unit[4];
    102                     if(i==3)
    103                         newStr+=ch+unit[1];
    104                     if(i==4)
    105                         newStr+=ch+unit[2];
    106                     if(i==5)
    107                         newStr+=ch+unit[3];
    108                     if(i==6)
    109                         newStr+=ch;
    110                 }
    111                 break;
    112             case 6://123456
    113                 for(int i=0;i<numLen;i++)
    114                 {
    115                     //取字符
    116                     char ch=str.charAt(i);
    117                     if(i==0)
    118                         newStr+=ch+unit[3];
    119                     if(i==1)
    120                         newStr+=ch+unit[4];
    121                     if(i==2)
    122                         newStr+=ch+unit[1];
    123                     if(i==3)
    124                         newStr+=ch+unit[2];
    125                     if(i==4)
    126                         newStr+=ch+unit[4];
    127                     if(i==5)
    128                         newStr+=ch;
    129                 }
    130                 break;
    131             case 5://12345
    132                 for(int i=0;i<numLen;i++)
    133                 {
    134                     //取字符
    135                     char ch=str.charAt(i);
    136                     if(i==0)
    137                         newStr+=ch+unit[4];
    138                     if(i==1)
    139                         newStr+=ch+unit[1];
    140                     if(i==2)
    141                         newStr+=ch+unit[2];
    142                     if(i==3)
    143                         newStr+=ch+unit[3];
    144                     if(i==4)
    145                         newStr+=ch;
    146                 }
    147                 break;
    148             case 4://1234
    149                 for(int i=0;i<numLen;i++)
    150                 {
    151                     //取字符
    152                     char ch=str.charAt(i);
    153                     if(i==0)
    154                         newStr+=ch+unit[1];
    155                     if(i==1)
    156                         newStr+=ch+unit[2];
    157                     if(i==2)
    158                         newStr+=ch+unit[3];
    159                     if(i==3)
    160                         newStr+=ch;
    161                 }
    162                 break;
    163             case 3://123
    164                 for(int i=0;i<numLen;i++)
    165                 {
    166                     //取字符
    167                     char ch=str.charAt(i);
    168                     if(i==0)
    169                         newStr+=ch+unit[2];
    170                     if(i==1)
    171                         newStr+=ch+unit[3];
    172                     if(i==2)
    173                         newStr+=ch;
    174                 }
    175                 break;
    176             case 2://12
    177                 for(int i=0;i<numLen;i++)
    178                 {
    179                     //取字符
    180                     char ch=str.charAt(i);
    181                     if(i==0)
    182                         newStr+=ch+unit[3];
    183                     if(i==1)
    184                         newStr+=ch;
    185                 }
    186                 break;
    187             case 1:
    188                 newStr+=str;
    189                 break;
    190             default:
    191                 break;
    192         }
    193         newStr+="元";
    194         String endStr="";
    195         StringBuffer sb=new StringBuffer(newStr);
    196         //处理转换后的字符串里面多个零的情况,寄将零后面的单位去掉
    197         for(int j=0;j<newStr.length();j++)
    198         {
    199             char ch=newStr.charAt(j);
    200             if(ch=='零')
    201             {
    202                 sb.replace(j+1,j+2,"*");
    203             }
    204              
    205         }
    206         //if(index>0)//
    207         endStr=sb.toString().replace("*","");
    208         
    209         StringBuffer sb0=new StringBuffer(endStr);
    210         int dou=sb0.toString().indexOf("零零");
    211         if(dou>0)
    212         {
    213             sb0.replace(dou,dou+1,"");
    214         }
    215         return sb0.toString();
    216 
    217     }
    218 
    219     public static void main(String[] args) 
    220     {
    221         StringBuffer sb=new StringBuffer("abbcdf");
    222         int index0=sb.toString().indexOf("bb");
    223         System.out.println(index0);
    224         sb.replace(index0,index0+2,"m");
    225         System.out.println(sb.toString());
    226         String s="abcd";
    227         int index=s.indexOf("f");
    228         System.out.println(index);
    229         Num2Rmb nr=new Num2Rmb();
    230         String[] numStr= nr.divide(100345678.25);
    231         String str= nr.toHanStr(numStr[0]);
    232         System.out.println(str);
    233     }
    234 }

    运行效果如下:
    
    
  • 相关阅读:
    如何在Windows 7平台搭建Android Cocos2d-x3.2alpha0开发环境
    boost::unordered_map分析和使用(转)
    #、##、__VA_ARGS__和##__VA_ARGS__的作用(转)
    C++ explicit关键字详解(转)
    C++11的auto关键字
    Nagios监控系统
    CentOS6.5安装oracle11
    Centos7系统中Mysql登录忘记root密码
    在Centos7系统上查看Mysql版本的方法
    忘记Redhat7root密码
  • 原文地址:https://www.cnblogs.com/mibing/p/6906547.html
Copyright © 2011-2022 走看看