日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

中文转数字

發布時間:2025/1/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 中文转数字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前在網絡搞了一份代碼,現在運行時發現運算有問題。先回憶一下事故現場:

public static int chineseNumber2Int(String chineseNumber){int sd=0;try {sd = Integer.valueOf(chineseNumber);} catch (NumberFormatException e) {if(e instanceof NumberFormatException){int result = 0;int temp = 1;//存放一個單位的數字如:十萬int count = 0;//判斷是否有chArrchar[] cnArr = new char[]{'一','二','三','四','五','六','七','八','九'};char[] chArr = new char[]{'十','百','千','萬','億'};for (int i = 0; i < chineseNumber.length(); i++) {boolean b = true;//判斷是否是chArrchar c = chineseNumber.charAt(i);for (int j = 0; j < cnArr.length; j++) {//非單位,即數字if (c == cnArr[j]) {if(0 != count){//添加下一個單位之前,先把上一個單位值添加到結果中result += temp;temp = 1;count = 0;}// 下標+1,就是對應的值temp = j + 1;b = false;break;}}if(b){//單位{'十','百','千','萬','億'}for (int j = 0; j < chArr.length; j++) {if (c == chArr[j]) {switch (j) {case 0:temp *= 10;break;case 1:temp *= 100;break;case 2:temp *= 1000;break;case 3:temp *= 10000;break;case 4:temp *= 100000000;break;default:break;}count++;}}}if (i == chineseNumber.length() - 1) {//遍歷到最后一個字符result += temp;}}return result;}}return sd; }

輸入 輸出

三億六百七十三萬零七十一 300030741

只好自己寫一個

public static BigDecimal sino2Int(String sino){//先拆分億int idx=sino.indexOf("億");String yi="";if(idx>0){yi=sino.substring(0,idx);if(idx!=sino.length()-1){//不是最后一個sino=sino.substring(idx+1);}else{sino="";}}//拆分萬int total1=0,total2=0;if(!"".equals(yi)){if(yi.contains("萬")){String wanqian=yi.substring(0,yi.indexOf("萬"));String wanhou=yi.substring(yi.indexOf("萬")+1);total1+=10000*sino2Int1_9999(wanqian)+sino2Int1_9999(wanhou);}else{total1+=sino2Int1_9999(yi);}}if(!"".equals(sino)){if(sino.contains("萬")){String wanqian=sino.substring(0,sino.indexOf("萬"));String wanhou=sino.substring(sino.indexOf("萬")+1);total2+=10000*sino2Int1_9999(wanqian)+sino2Int1_9999(wanhou);}else{total2+=sino2Int1_9999(sino);}}BigDecimal b1 = new BigDecimal(total1);return b1.multiply(new BigDecimal(100000000)).add(new BigDecimal(total2));}public static int sino2Int1_9999(String s){String thenumber="零一二三四五六七八九";if(s==null||s.equals("")) return 0;s=s.replaceAll("零", "");int qian=0,bai=0,shi=0,ge=0;if(s.indexOf("千")>0){qian=thenumber.indexOf(s.substring(0,s.indexOf("千")));s=s.substring(s.indexOf("千")+1);}if(s.indexOf("百")>0){bai=thenumber.indexOf(s.substring(0,s.indexOf("百")));s=s.substring(s.indexOf("百")+1);}if(s.indexOf("十")>0){shi=thenumber.indexOf(s.substring(0,s.indexOf("十")));s=s.substring(s.indexOf("十")+1);}else if(s.indexOf("十")==0){shi=1;s=s.substring(1);}if(!s.equals("")&&s.length()==1){ge=thenumber.indexOf(s);}return 1000*qian+100*bai+10*shi+ge;}

看看效果

總結

以上是生活随笔為你收集整理的中文转数字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。