码迷,mamicode.com
首页 > 编程语言 > 详细

java-练习 把数字转化为钱币

时间:2018-03-01 11:43:06      阅读:171      评论:0      收藏:0      [点我收藏+]

标签: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) {// 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-练习 把数字转化为钱币

标签:amp   ati   for   enum   部分   turn   dex   substr   and   

原文地址:https://www.cnblogs.com/zhizhiyin/p/8486435.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!