java 将单词转换为_用Java转换成英语单词

这段Java代码实现了将数字转换成英文单词的功能,包括从0到亿的数字。主要方法convertLessThanOneThousand用于处理小于1000的数字,而convert处理更大范围的数字,通过拆分数字并逐级转换。
摘要由CSDN通过智能技术生成

小编典典

看看这段代码,它可能就是您想要的。例如,在main方法内部,如果有:

System.out.println(convert(22));

输出:

twenty two

编辑 我复制了下面的代码,清理了一下格式(主方法在底部):

import java.text.DecimalFormat;

public class EnglishNumberToWords {

private static final String[] tensNames = { "", " ten", " twenty",

" thirty", " forty", " fifty", " sixty", " seventy", " eighty",

" ninety" };

private static final String[] numNames = { "", " one", " two", " three",

" four", " five", " six", " seven", " eight", " nine", " ten",

" eleven", " twelve", " thirteen", " fourteen", " fifteen",

" sixteen", " seventeen", " eighteen", " nineteen" };

private static String convertLessThanOneThousand(int number) {

String soFar;

if (number % 100 < 20) {

soFar = numNames[number % 100];

number /= 100;

} else {

soFar = numNames[number % 10];

number /= 10;

soFar = tensNames[number % 10] + soFar;

number /= 10;

}

if (number == 0)

return soFar;

return numNames[number] + " hundred" + soFar;

}

public static String convert(long number) {

// 0 to 999 999 999 999

if (number == 0) {

return "zero";

}

String snumber = Long.toString(number);

// pad with "0"

String mask = "000000000000";

DecimalFormat df = new DecimalFormat(mask);

snumber = df.format(number);

// XXXnnnnnnnnn

int billions = Integer.parseInt(snumber.substring(0, 3));

// nnnXXXnnnnnn

int millions = Integer.parseInt(snumber.substring(3, 6));

// nnnnnnXXXnnn

int hundredThousands = Integer.parseInt(snumber.substring(6, 9));

// nnnnnnnnnXXX

int thousands = Integer.parseInt(snumber.substring(9, 12));

String tradBillions;

switch (billions) {

case 0:

tradBillions = "";

break;

case 1:

tradBillions = convertLessThanOneThousand(billions) + " billion ";

break;

default:

tradBillions = convertLessThanOneThousand(billions) + " billion ";

}

String result = tradBillions;

String tradMillions;

switch (millions) {

case 0:

tradMillions = "";

break;

case 1:

tradMillions = convertLessThanOneThousand(millions) + " million ";

break;

default:

tradMillions = convertLessThanOneThousand(millions) + " million ";

}

result = result + tradMillions;

String tradHundredThousands;

switch (hundredThousands) {

case 0:

tradHundredThousands = "";

break;

case 1:

tradHundredThousands = "one thousand ";

break;

default:

tradHundredThousands = convertLessThanOneThousand(hundredThousands)

+ " thousand ";

}

result = result + tradHundredThousands;

String tradThousand;

tradThousand = convertLessThanOneThousand(thousands);

result = result + tradThousand;

// remove extra spaces!

return result.replaceAll("^\\s+", "").replaceAll("\\b\\s{2,}\\b", " ");

}

public static void main(String[] args) {

System.out.println(convert(22)); // "twenty two"

}

}

2020-09-28

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值