標籤:amp ati for enum 部分 turn dex substr and
傻瓜版
寫到最後懶得寫小數部分了,反正邏輯都是一樣繞。
package chapter4;public class FloatToRmb {public static void main(String[] args) {double f = 1006.789;String[] ds = num(f);String begin = ds[0];String after = ds[1];String str = "";if (begin.length() > 0)str = handleBefore(begin);if (after.length() > 0) {str = str + handleAfter(after);}System.out.println(str);}public static String handleBefore(String str) {// 1006String str1 = "";if (str.length() > 0) {// 2{if (!str.substring(str.length() - 1).equals("0"))// 6str1 = str.substring(str.length() - 1) + "元";str = str.substring(0, str.length() - 1);System.out.println(str.length());}if (str.length() > 0) {// 2if (!str.substring(str.length() - 1).equals("0"))// 6{str1 = str.substring(str.length() - 1) + "shi" + str1;} else {str1 = "零" + str1;}str = str.substring(0, str.length() - 1);}if (str.length() > 0) {// 2if (!str.substring(str.length() - 1).equals("0"))// 6{str1 = str.substring(str.length() - 1) + "bai" + str1;} else if (!str1.startsWith("零")) {str1 = "零" + str1;}str = str.substring(0, str.length() - 1);}if (str.length() > 0) {// 2if (!str.substring(str.length() - 1).equals("0"))// 6str1 = str.substring(str.length() - 1) + "qian" + str1;}return str1;}public static String toChineseNum(int a) {String str = "";switch (a) {case 1:str = "壹";case 2:str = "貳";case 3:str = "三";case 4:str = "肆";case 5:str = "伍";case 6:str = "陸";case 7:str = "柒";case 8:str = "捌";case 9:str = "久";}return str;}public static String handleAfter(String str) {return "2";}public static String[] num(double d) {String[] ds = { "", "" };String str = String.valueOf(d);int num = str.indexOf(".");ds[0] = str.substring(0, num);ds[1] = str.substring(num + 1);return ds;}}
改進版
思路想好了
對所有數值,都轉換成 xxxxxxx的格式
即 1006 轉為 1006000,10067轉為1006700 ,6.7轉為0006700;
對任意7位元,插入字元
String 1 ="1234567";
String 2 = "千百十元角分毫"
str="1千2百3十4元5分6角7毫";
package chapter4;public class FloatToRmb {public static void main(String[] args) {double d=10.078;int a=(int)(d*1000);//1066789String str=String.valueOf(a);if(str.length()<=1){str="零";}while(str.length()!=7){str="0"+str;}String str1="千百十元角分毫";//3String str2="";for(int i=str.length();i>0;i--){if(!str.substring(i-1,i).equals("0")){str2=str.substring(i-1,i)+str1.substring(i-1, i)+str2;}else if (str.substring(i-1,i).equals("0")&&(!str2.startsWith("零"))&&((i-1)<3)&&(!str.startsWith("0"))&&!str2.startsWith("元")//元){//indexof 似乎不能識別中文?System.out.println(str1.indexOf("元")+","+(i-1));str2="零"+str2;}else if(!str2.startsWith("元")&&((i-1)==3)){str2="元"+str2;}System.out.println(str.substring(i-1, i));str1=str1.substring(0, i-1);str=str.substring(0, i-1);}System.out.println(str2);}}
邏輯判斷的部分太垃圾了。。。。還需要改進
java-練習 把數字轉化為錢幣