Java程序将数字转换为单词
时间:2020-01-09 10:35:33 来源:igfitidea点击:
这篇文章显示了如何编写Java程序来将数字转换为单词。
例如,如果输入数字123,则输出字数应为123. 在后期,国际系统和印度系统都将数字转换为单词。
用于将数字转换为单词的Java程序-国际系统
如果我们在国际系统中观察到,则逗号应每三位放置一个。
223,544,578 – 223,3,534,450,458
如上例223所示,每个逗号之间的三个数字用相同的方式写成223 234,544 444. 我们只需要在三位数之间放入正确的面额即可。
这种观察形成了Java程序将数字转换为单词的逻辑。从右开始,一次取3位数字,然后将其转换为单词,然后将正确的面额进行排序。
public class NumberToWord {
private static final String[] units = {
"",
" one",
" two",
" three",
" four",
" five",
" six",
" seven",
" eight",
" nine"
};
private static final String[] doubles = {
" ten",
" eleven",
" twelve",
" thirteen",
" fourteen",
" fifteen",
" sixteen",
" seventeen",
" eighteen",
" nineteen"
};
private static final String[] tens = {
"",
"",
" twenty",
" thirty",
" forty",
" fifty",
" sixty",
" seventy",
" eighty",
" ninety"
};
private static final String[] hundreds = {
"",
" thousand",
" million",
" billion"
};
private static String convertToWord(int number) {
String word = "";
int index = 0;
do {
// take 3 digits at a time
int num = number % 1000;
if (num != 0){
String str = convertThreeOrLessThanThreeDigitNum(num);
word = str + hundreds[index] + word;
}
index++;
// move left by 3 digits
number = number/1000;
} while (number > 0);
return word;
}
private static String convertThreeOrLessThanThreeDigitNum(int number) {
String word = "";
int num = number % 100;
// Logic to take word from appropriate array
if(num < 10){
word = word + units[num];
}
else if(num < 20){
word = word + doubles[num%10];
}else{
word = tens[num/10] + units[num%10];
}
word = (number/100 > 0)? units[number/100] + " hundred" + word : word;
return word;
}
public static void main(String[] args) {
System.out.println("Number-- " + convertToWord(123456789));
System.out.println("Number-- " + convertToWord(78));
System.out.println("Number-- " + convertToWord(35658));
System.out.println("Number-- " + convertToWord(2367904));
System.out.println("Number-- " + convertToWord(1700));
}
}
输出:
Number-- one hundred twenty three million four hundred fifty six thousand seven hundred eighty nine Number-- seventy eight Number-- thirty five thousand six hundred fifty eight Number-- two million three hundred sixty seven thousand nine hundred four Number-- one thousand seven hundred
请注意,该程序可以运行到十亿,如果我们想进一步操作,则将其添加到"数百"数组中。我们还需要将类型从int更改为double。
用于将数字转换为单词的Java程序-印度系统
如果我们在印度系统中观察到,则逗号每隔两位数放置一次,除非第一个实例将其放在三位数后。
22,35,44,578 –仅22千三百三十万五千四百四十五万八千七百八十八
在印度系统中,从右开始,我们需要第一次输入3位数字,然后在每次迭代中移动2位数字。
public class NumberToWord {
private static final String[] units = {
"",
" one",
" two",
" three",
" four",
" five",
" six",
" seven",
" eight",
" nine"
};
private static final String[] doubles = {
" ten",
" eleven",
" twelve",
" thirteen",
" fourteen",
" fifteen",
" sixteen",
" seventeen",
" eighteen",
" nineteen"
};
private static final String[] tens = {
"",
"",
" twenty",
" thirty",
" forty",
" fifty",
" sixty",
" seventy",
" eighty",
" ninety"
};
private static final String[] hundreds = {
"",
" thousand",
" lakh",
" crore",
" arab",
" kharab"
};
private static String convertToWord(int number) {
String num = "";
int index = 0;
int n;
int digits;
boolean firstIteration = true;
do {
if(firstIteration){
digits = 1000;
}else{
digits = 100;
}
n = number % digits;
if (n != 0){
String s = convertThreeOrLessThanThreeDigitNum(n);
num = s + hundreds[index] + num;
}
index++;
number = number/digits;
firstIteration = false;
} while (number > 0);
return num;
}
private static String convertThreeOrLessThanThreeDigitNum(int number) {
String word = "";
int num = number % 100;
// Logic to take word from appropriate array
if(num < 10){
word = word + units[num];
}
else if(num < 20){
word = word + doubles[num%10];
}else{
word = tens[num/10] + units[num%10];
}
word = (number/100 > 0)? units[number/100] + " hundred" + word : word;
return word;
}
public static void main(String[] args) {
System.out.println("Number-- " + convertToWord(1112345678));
System.out.println("Number-- " + convertToWord(78));
System.out.println("Number-- " + convertToWord(35658));
System.out.println("Number-- " + convertToWord(2367904));
System.out.println("Number-- " + convertToWord(1700));
}
}
输出:
Number-- one arab eleven crore twenty three lakh forty five thousand six hundred seventy eight Number-- seventy eight Number-- thirty five thousand six hundred fifty eight Number-- twenty three lakh sixty seven thousand nine hundred four Number-- one thousand seven hundred

