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 }

运行效果如下:

原文地址:https://www.cnblogs.com/mibing/p/6906547.html