用Java转换成英语单词

在这里,我想问些奇怪的事情。

我想问问有什么方法/逻辑可以将整数值转换成包含数字英文单词的字符串值?

例如,用户输入22并获得输出22或2。

谢谢

回答:

看看这段代码,它可能就是您想要的。例如,在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"

}

}

以上是 用Java转换成英语单词 的全部内容, 来源链接: utcz.com/qa/415043.html

回到顶部