java-練習 把數字轉化為錢幣
阿新 • • 發佈:2018-03-01
bsp chinese hand int 都是 邏輯 中文 switch equal
傻瓜版
寫到最後懶得寫小數部分了,反正邏輯都是一樣繞。
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) {// 1006 String str1 = ""; if (str.length() > 0) {// 2{ if (!str.substring(str.length() - 1).equals("0"))// 6 str1 = str.substring(str.length() - 1) + "元"; str = str.substring(0, str.length() - 1); System.out.println(str.length()); } if (str.length() > 0) {// 2 if (!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) {// 2 if (!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) {// 2 if (!str.substring(str.length() - 1).equals("0"))// 6 str1 = 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);//1066789 String str=String.valueOf(a); if(str.length()<=1){ str="零"; } while(str.length()!=7){ str="0"+str; } String str1="千百十元角分毫";//3 String 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-練習 把數字轉化為錢幣