输入一个浮点数,打印出相对应的人民币读法的字符串,如:1605.22转换后为:壹仟陆佰零伍元贰角贰分

输入一个浮点数,打印出相对应的人民币读法的字符串,如:1605.22转换后为:壹仟陆佰零伍元贰角贰分

package demo40;

import java.util.Scanner;

/**
 * 输入一个浮点数,打印出相对应的人民币读法的字符串,如:1605.22转换后为:壹仟陆佰零伍元贰角贰分
 * 
 * @author trust the process
 *
 */
public class Ttp {
	public static void main(String[] args) {
		double money = 0;
		System.out.println("请输入一个浮点数X(X的取值范围为:1<=X<10000000):");
		Scanner s = new Scanner(System.in);
		money = s.nextDouble();

		//判断是否符合要求
		while(money >= 10000000 || money < 1){
			System.out.println("超出范围!请重新输入:");
			money = s.nextDouble();
		}
		// 把浮点数转换为字符串
		String monStr = money + "";
		// 求出第一次出现小数点的位置
		int firIndex = monStr.indexOf('.');
		// 创建一个字符数组来存储字符串
		char[] m = monStr.toCharArray();

		if (firIndex == 1) {
			test(m[0]);
		} else if (firIndex == 2) {
			test(m[0]);
			test3(2);
			if (m[1] == '0') {
			} else {
				test(m[1]);
			}
		} else if (firIndex == 3) {
			test(m[0]);
			test3(3);
			if (m[1] == '0' && m[2] == '0') {
			} else if (m[1] == '0') {
				test(m[0]);
				test3(3);
				test3(1);
				test(m[2]);
			} else if (m[2] == '0') {
				test(m[1]);
				test3(3);
			} else {
				test(m[1]);
				test3(2);
				test(m[2]);
			}
		} else if (firIndex == 4) {
			test(m[0]);
			test3(4);
			if (m[1] == '0' && m[2] == '0' && m[3] == '0') { // 1000.22

			} else if (m[1] == '0' && m[2] == '0') { // 1006.22
				test3(1);
				test(m[3]);
			} else if (m[1] == '0' && m[3] == '0') { // 1050.22
				test3(1);
				test(m[2]);
				test3(2);
			} else if (m[2] == '0' && m[3] == '0') { // 1500.22
				test(m[1]);
				test3(3);
			} else if (m[1] == '0') { // 1056.22
				test3(1);
				test(m[2]);
				test3(2);
				test(m[3]);
			} else if (m[2] == '0') {
				test(m[1]);
				test3(3);
				test3(1);
				test(m[3]);
			} else if (m[3] == '0') {
				test(m[1]);
				test3(3);
				test(m[2]);
				test3(2);
			} else {
				test(m[1]);
				test3(3);
				test(m[2]);
				test3(2);
				test(m[3]);
			}
		} else if (firIndex == 5) {
			test(m[0]);
			test3(5);
			test2(firIndex, m);
		} else if (firIndex == 6) {
			// 确定“万”之上上的叫法
			test(m[0]);
			test3(2);
			if (m[1] == '0') {
			} else {
				test(m[1]);
			}
			test3(5);

			// 确定“万”之下的叫法
			test2(firIndex, m);
		} else if (firIndex == 7) {
			// 确定“万”之上上的叫法
			if (m[1] == '0' && m[2] == '0') {
				test(m[0]);
				test3(3);
			} else if (m[1] == '0') {
				test(m[0]);
				test3(3);
				test3(1);
				test(m[2]);
			} else if (m[2] == '0') {
				test(m[0]);
				test3(3);
				test(m[1]);
				test3(2);
			} else {
				test(m[0]);
				test3(3);
				test(m[1]);
				test3(2);
				test(m[2]);
			}
			test3(5);

			// 确定“万”之下的叫法
			test2(firIndex, m);
		}
		System.out.print("元");

		// 确定小数部分的读法
		if (monStr.length() - firIndex > 2) {

			if (m[firIndex + 1] == '0' && m[firIndex + 2] == '0') {
				test3(8);
			} else if (m[firIndex + 1] == '0') {
				test3(1);
				test(m[firIndex + 2]);
				test3(7);
			} else if (m[firIndex + 2] == '0') {
				test(m[firIndex + 1]);
				test3(6);
			} else {
				test(m[firIndex + 1]);
				test3(6);
				test(m[firIndex + 2]);
				test3(7);
			}
		} else if (monStr.length() - firIndex == 2) {
			if (m[firIndex + 1] == '0') {
				test3(8);
			} else {
				test(m[firIndex + 1]);
				test3(6);
			}
		}
	}

	public static void test(char m) {
		if (m == '0') {
			System.out.print("零");
		} else if (m == '1') {
			System.out.print("壹");
		} else if (m == '2') {
			System.out.print("贰");
		} else if (m == '3') {
			System.out.print("叁");
		} else if (m == '4') {
			System.out.print("肆");
		} else if (m == '5') {
			System.out.print("伍");
		} else if (m == '6') {
			System.out.print("陆");
		} else if (m == '7') {
			System.out.print("柒");
		} else if (m == '8') {
			System.out.print("捌");
		} else if (m == '9') {
			System.out.print("玖");
		}
	}

	public static void test2(int firIndex, char[] m) {
		// 确定“万”之下的叫法
		if (m[firIndex - 4] == '0' && m[firIndex - 3] == '0' && m[firIndex - 2] == '0' && m[firIndex - 1] == '0') {
			test3(8);
		} else if (m[firIndex - 4] == '0' && m[firIndex - 3] == '0' && m[firIndex - 2] == '0') {
			test3(1);
			test(m[firIndex - 1]);
		} else if (m[firIndex - 4] == '0' && m[firIndex - 2] == '0' && m[firIndex - 1] == '0') {
			test3(1);
			test(m[3]);
			test3(3);
		} else if (m[firIndex - 4] == '0' && m[firIndex - 3] == '0' && m[firIndex - 1] == '0') {
			test3(1);
			test(m[2]);
			test3(2);
		} else if (m[firIndex - 3] == '0' && m[firIndex - 2] == '0' && m[firIndex - 1] == '0') {
			test(m[firIndex - 4]);
			test3(4);
		} else if (m[firIndex - 4] == '0' && m[firIndex - 3] == '0') {
			test3(1);
			test(m[firIndex - 2]);
			test3(2);
			test(m[firIndex - 1]);
		} else if (m[firIndex - 4] == '0' && m[firIndex - 2] == '0') {
			test3(1);
			test(m[firIndex - 3]);
			test3(3);
			test3(1);
			test(m[firIndex - 1]);
		} else if (m[firIndex - 4] == '0' && m[firIndex - 1] == '0') {
			test3(1);
			test(m[firIndex - 3]);
			test3(3);
			test(m[firIndex - 2]);
			test3(2);
		} else if (m[firIndex - 3] == '0' && m[firIndex - 2] == '0') {
			test(m[firIndex - 4]);
			test3(4);
			test3(1);
			test(m[firIndex - 1]);
		} else if (m[firIndex - 3] == '0' && m[firIndex - 1] == '0') {
			test(m[firIndex - 4]);
			test3(4);
			test(m[firIndex - 2]);
			test3(2);
		} else if (m[firIndex - 2] == '0' && m[firIndex - 1] == '0') {
			test(m[firIndex - 4]);
			test3(4);
			test(m[firIndex - 3]);
			test3(3);
		} else if (m[firIndex - 4] == '0') {
			test3(1);
			test(m[firIndex - 3]);
			test3(3);
			test(m[firIndex - 2]);
			test3(2);
			test(m[firIndex - 1]);
		} else if (m[firIndex - 3] == '0') {
			test(m[firIndex - 4]);
			test3(4);
			test3(1);
			test(m[firIndex - 2]);
			test3(2);
			test(m[firIndex - 1]);
		} else if (m[firIndex - 2] == '0') {
			test(m[firIndex - 4]);
			test3(4);
			test(m[firIndex - 3]);
			test3(3);
			test3(1);
			test(m[firIndex - 1]);
		} else if (m[firIndex - 2] == '0') {
			test(m[firIndex - 4]);
			test3(4);
			test(m[firIndex - 3]);
			test3(3);
			test(m[firIndex - 2]);
			test3(2);
		} else {
			test(m[firIndex - 4]);
			test3(4);
			test(m[firIndex - 3]);
			test3(3);
			test(m[firIndex - 2]);
			test3(2);
			test(m[firIndex - 1]);
		}
	}

	public static void test3(int n) {
		if (n == 1) {
			System.out.print("零");
		} else if (n == 2) {
			System.out.print("拾");
		} else if (n == 3) {
			System.out.print("佰");
		} else if (n == 4) {
			System.out.print("仟");
		} else if (n == 5) {
			System.out.print("万");
		} else if (n == 6) {
			System.out.print("角");
		} else if (n == 7) {
			System.out.print("分");
		} else if (n == 8) {
			System.out.print("整");
		}
	}
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值