扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
| 
 
 读入一个浮点数值,将其转化为金额的中文大写方式. 
 
 试验要求: 
 
 当金额为整数时,只表示整数部分,省略小数部分,并添加"整"字. 
 
 当金额中含有连续的0时,只需要一个"零"即可. 
 
 10的表示方式.例如110--壹佰一拾元整,10---一拾元整 
 
 
 -------------------------------------------------------------------------------- 
 1import java.io.*; 
 2class chineseMoney...{ 
 3 private String number[]=...{"","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; 
 4 private String unit[]=...{"","拾","佰","仟"}; 
 5 private String small[]=...{"角","分"}; 
 6 //private String strNumber,strUnit,strAll; 
 7 
 8 //是否在number中 
 9 private boolean IsInNumber(String strNumber) 
 10 ...{ 
 11 boolean inNumber=false; 
 12 for (int i=0;i<9;i++) 
 13 ...{ 
 14 if (strNumber.compareTo (number[i])==0) inNumber=true; 
 15 } 
 16 return inNumber; 
 17 } 
 18 
 19 
 20 private String SplitChineseNumber(int intUnit,String strInt) 
 21 ...{ 
 22 int l=strInt.length (); 
 23 int j,k,zeorCountTemp=0; 
 24 String strUnit="",strNumber="",strAll=""; 
 25 
 26 //判断在千万到万位 是否全为0,是的话,不返回“万”,返回“”; 
 27 boolean temp=false; 
 28 for (k=0;k 30 String strTemp=strInt.substring(k,k+1); 
 31 int intTemp=Integer.parseInt(strTemp); 
 32 
 33 if (intTemp!=0) temp=true; 
 34 } 
 35 if (temp==false) 
 36 ...{ 
 37 if (intUnit==5)return ""; 
 38 } 
 39 
 40 
 41 int checkK=0; 
 42 //正式开始转换 
 43 for (k=0;k 45 String strTemp=strInt.substring(k,k+1); 
 46 int intTemp=Integer.parseInt(strTemp); 
 47 strNumber= number[intTemp]; 
 48 
 49 //j 从 
 50 j=l-1-k; 
 51 
 52 strUnit=unit[j]; 
 53 
 54 
 55 //数值+单位 
 56 //如果数值=0,数值=“” 
 57 if (intTemp==0) 
 58 ...{ 
 59 // 
 60 if (zeorCountTemp==0) 
 61 ...{ 
 62 //单位=零 
 63 strUnit=strUnit.replace(''''拾'''',''''零''''); 
 64 strUnit=strUnit.replace(''''佰'''',''''零''''); 
 65 strUnit=strUnit.replace(''''仟'''',''''零''''); 
 66 } 
 67 else 
 68 ...{ 
 69 //多零情况下,单位=“” 
 70 strUnit=strUnit.replaceAll("拾",""); 
 71 strUnit=strUnit.replaceAll("佰",""); 
 72 strUnit=strUnit.replaceAll("仟",""); 
 73 } 
 74 zeorCountTemp++; 
 75 } 
 76 checkK=k; 
 77 strAll+=strNumber+strUnit; 
 78 } 
 79 
 80 return strAll; 
 81 } 
 82 
 83 private String onlyInt(int intInt) 
 84 ...{ 
 85 String strInt; 
 86 strInt=String.valueOf(intInt); 
 87 int l=strInt.length(); 
 88 
 89 String strAll=""; 
 90 //按照四位 一分隔 来计算 
 91 if (l>8)//亿 
 92 ...{ 
 93 strAll+=this.SplitChineseNumber(9,strInt.substring(0,l-8))+"亿"; 
 94 strAll+=this.SplitChineseNumber(5,strInt.substring(l-8,l-4)); 
 95 strAll+=this.SplitChineseNumber(1,strInt.substring(l-4,l))+"元"; 
 96 } 
 97 else if (l>4)//万 
 98 ...{ 
 99 strAll+=this.SplitChineseNumber(5,strInt.substring(0,l-4)); 
 100 strAll+=this.SplitChineseNumber(1,strInt.substring(l-4,l))+"元"; 
 101 
 102 } 
 103 else if (l>0) 
 104 ...{ 
 105 strAll+=this.SplitChineseNumber(1,strInt)+"元"; 
 106 } 
 107// 
 108// 
 109// 
 110// 
 111// 100101000 
 112 int checkL=strAll.length(); 
 113 
 114 char strTemp2; 
 115 for (int k=1;k 117 strTemp2=strAll.charAt(k); 
 118 if (strTemp2==''''零'''') 
 119 ...{ 
 120 //判断零的前后是否有数字,无数字则删除这个零 
 121 String strBeforeTemp=strAll.substring(k-1,k); 
 122 String strAfterTemp=strAll.substring(k+1,k+2); 
 123 if (!this.IsInNumber(strBeforeTemp)&&!this.IsInNumber(strAfterTemp)) 
 124 ...{ 
 125 strBeforeTemp=strAll.substring(0,k); 
 126 strAfterTemp=strAll.substring(k+1,checkL); 
 127 strAll= strBeforeTemp+strAfterTemp; 
 128 break; 
 129 } 
 130 
 131 } 
 132 } 
 133 
 134 return strAll; 
 135 
 136 } 
 137 
 138 private String onlySmall(int intSmall) 
 139 ...{ 
 140 String strNumber,strUnit,strAll; 
 141 strNumber="";strUnit="";strAll=""; 
 142 String strSmall,strTemp; 
 143 strSmall=String.valueOf(intSmall); 
 144 int i; 
 145 if (intSmall>=10) 
 146 ...{ 
 147 for (i=0;i 149 strTemp=String.valueOf(intSmall).substring(i,i+1); 
 150 if (Integer.parseInt(strTemp)!=0) 
 151 ...{ 
 152 strNumber=number[Integer.parseInt(strTemp)]; 
 153 strUnit=small[i]; 
 154 strAll+=strNumber+strUnit; 
 155 } 
 156 } 
 157 } 
 158 else 
 159 ...{ 
 160 if (intSmall!=0) 
 161 ...{ 
 162 strNumber=number[intSmall]; 
 163 strUnit=small[1]; 
 164 strAll+=strNumber+strUnit; 
 165 } 
 166 } 
 167 
 168 return strAll; 
 169 } 
 170 
 171 public String getChineseMoney(double number) 
 172 ...{ 
 173 //四舍五入 
 174 number=(number*100+0.5)/100; 
 175 
 176 String strAll,strChineseInt,strChineseSmall,strZheng;; 
 177 int intInt,intSmall; 
 178 strChineseInt="";strChineseSmall="";strZheng=""; 
 179 
 180 //整数部分 
 181 intInt=(int)( number*100/100); 
 182 if (intInt!=0) 
 183 ...{ 
 184 strChineseInt=onlyInt(intInt); 
 185 } 
 186 //小数部分 
 187 double temp=(number-intInt)*100*100/100; 
 188 //对小数部分四舍五入 
 189 intSmall=(int)(temp*100+0.5)/100; 
 190 if (intSmall!=0) 
 191 ...{ 
 192 strChineseSmall=onlySmall(intSmall); 
 193 } 
 194 else 
 195 ...{ 
 196 strZheng="整"; 
 197 } 
 198 strAll=strChineseInt+strChineseSmall+strZheng; 
 199 return strAll; 
 200 } 
 201 public static void main(String args[]) throws IOException 
 202 ...{ 
 203 chineseMoney cm=new chineseMoney(); 
 204 double money; 
 205 String strMoney,strChineseMoney; 
 206 strMoney=""; 
 207 //读取 
 208 System.out.println("输入货币(四舍五入):"); 
 209 BufferedReader cin = new BufferedReader(new InputStreamReader( System.in)); 
 210 strMoney = cin.readLine(); 
 211 money=Double.parseDouble(strMoney); 
 212 //money=12346.465;//Double.parseDouble(strMoney); 
 213 strChineseMoney=cm.getChineseMoney(money); 
 214 System.out.println(strChineseMoney); 
 215 } 
 216}  | 
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。