1. 程式人生 > >java-練習 把數字轉化為錢幣

java-練習 把數字轉化為錢幣

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-練習 把數字轉化為錢幣