(每日一练C++)CC208 数字发音

描述

给定一个非负整数x,请编写一个算法返回一个string,代表该整数的英文描述。

测试样例:

1234
返回:"One Thousand,Two Hundred Thirty Four"

/*
 * 输入数字输出相应字符串
 * 
 */

public class NumToStringx {
	String[] baseNum = { "zero", "one", "two", "three", "four", "five", "six",
			"seven", "eight", "nine", "ten", "eleven", "twelve", " thirteen",
			" fourteen", " fifteen", " sixteen", "seventeen", "eighteen",
			"nineteen", };
	String[] tyNum = { "twenty", "thirty", "forty", "fifty", "sixty",
			"seventy", "eighty", "ninety" };
	String[] bigNum = { "", "shousand", "million", "billion" };

	public void numToString(int n) {
		StringBuffer result = null;
		int temp;
		int num = n;
		int j = 0;
		if (num == 0) {
			System.out.println(baseNum[0]);
			return;
		}
		while (num != 0) {
			temp = num % 1000;// 三位数字分为一段
			if (j == 0) {// j表示thousand、million、billion
				result = tempToString(temp).append(" " + bigNum[j]);
			} else {
				result = tempToString(temp).append(" " + bigNum[j])
						.append(" , ").append(result);
			}
			j++;
			num = num / 1000;
		}
		System.out.println(result);
	}

	// 将三位数转换为string
	public StringBuffer tempToString(int temp) {//
		StringBuffer num = new StringBuffer();
		int i = temp / 100;
		if (i != 0)
			num = num.append(baseNum[i] + " hundred ");
		i = temp % 100;
		if (0 < i && i < 19) {
			num = num.append(baseNum[i]);
		} else {
			num = num.append(tyNum[i / 10 - 1]);
			if (i / 10 != 0)// 排除尾数为0
				num.append("-" + baseNum[i / 10]);
		}

		return num;
	}

	public static void main(String[] ede) {
		NumToStringx numToStringx = new NumToStringx();
		numToStringx.numToString(0);
		numToStringx.numToString(46);
		numToStringx.numToString(546);
		numToStringx.numToString(6546);
		numToStringx.numToString(1354565460);
	}

}

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

助力毕业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值