江西广告网
标题:
JAVA应用:
[打印本页]
作者:
anne007
时间:
2009-1-7 10:26
标题:
JAVA应用:
读入一个浮点数值,将其转化为金额的中文大写方式. 试验要求: 当金额为整数时,只表示整数部分,省略小数部分,并添加"整"字. 当金额中含有连续的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;k29 ...{ 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;k44 ...{ 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;k116 ...{ 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;i148 ...{ 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}
欢迎光临 江西广告网 (http://bbs.jxadw.com/)
Powered by Discuz! X3.2