在Java中将数字转换为单词
我的程序是将0到100之间的数字转换成单词。我不确定哪种策略最好,但我想使用数学运算符,如模块等。这是我到目前为止得到的在Java中将数字转换为单词,java,module,numbers,words,Java,Module,Numbers,Words,我的程序是将0到100之间的数字转换成单词。我不确定哪种策略最好,但我想使用数学运算符,如模块等。这是我到目前为止得到的 package project.pkg1; import java.util.Scanner; public class Project1 { public static final int MINUMUN_NUMBER = 0; public static final int MAXIMUM_NUMBER = 100; public static void main(S
package project.pkg1;
import java.util.Scanner;
public class Project1 {
public static final int MINUMUN_NUMBER = 0;
public static final int MAXIMUM_NUMBER = 100;
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int num, x;
do{
System.out.println("Enter a number between 0 and 100: ");
num = keyboard.nextInt();
} while ((num < 0) || (num > 100));
if(num == 0)
System.out.println("zero");
if(num == 100)
System.out.println("one hundred");
我需要34号打印“三十四”
任何反馈都将不胜感激 您还可以为1-19和100之间的数字创建单独的变量。对于20-99,它们有前缀和后缀,可以使用字符串连接进行组合,并且可以通过第一个和最后一个数字进行识别。您应该了解0到100之间的数字的模式。以下是您将发现的内容:
- 单个数字:从字符串[]中提取数字={“零”、“一”、“二、…”和“十”}
- 对于青少年,从字符串中拉出[]青少年={“十一”,“十二”,“十九”}
- 对于较大的数字,除以10,从{“二十”、“三十”、“九十”}中抽取;然后,若数字被10除后有余数,则将数字部分“-”+从上面的数字中拉出
公共类编号ToWord{
私有静态最终字符串[]数字={
“零”,
“一个”,
“两个”,
“三”,
“四”,
“五个”,
“六”,
“七”,
“八”,
“九”,
“十”,
“十一”,
“十二”,
“十三”,
“十四”,
“十五”,
“十六”,
“十七”,
“十八”,
“十九”,
“一百”
};
私有静态最终字符串[]十={
“二十”,
“三十”,
“四十”,
“五十”,
“六十”,
“七十”,
“八十”,
“九岁”
};
公共静态字符串numberToWord(最终整数){
如果(数字<0)
抛出新的IllegalArgumentException(“数字太低”);
如果(数量>100)
抛出新的IllegalArgumentException(“数字过高”);
如果(数字<20)
返回编号[编号];
如果(数字=100)
返回编号[20];
返回十[number/10-2]+((number%10>0)?(“+number[number%10]):”);
}
公共静态void main(字符串[]args){
对于(int i=0;i),这是一项乏味的任务。我建议写下数字及其匹配的单词,以查找案例的相似性。将涉及许多if
语句。不一定是if语句,例如,如果单词存储为数组元素,数字作为索引。为基本和不规则案例创建一个映射(1->1,2->2,…);尝试使用组合规则(例如46=(40)40+(6)6)。不要重复,因为1-100是一种特殊情况,手工操作时更容易管理。我记得在大学里,有人写了一个100 swich case块,这很有趣:-)是的,我想我会做1-19、20-99、100个变量,但我不知道如何设置它们以及如何组合它们。对不起,我对编码非常陌生。如果你愿意,尝试一些东西,并在你的工作中发布另一个问题。我如何让它除以10,然后再加上1位数字?我真的很欣赏这些代码!但是,我正在尝试获取你的代码只需输出作为我的答案。我需要它输出输入一个介于0和100之间的数字:34三十四
run:
Enter a number between 0 and 100:
-1
Enter a number between 0 and 100:
101
Enter a number between 0 and 100:
34
BUILD SUCCESSFUL (total time: 23 seconds)
public class NumbersToWords {
private static final String[] NUMBERS = {
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine",
"ten",
"eleven",
"twelve",
"thirteen",
"fourteen",
"fifteen",
"sixteen",
"seventeen",
"eighteen",
"nineteen",
"one hundred"
};
private static final String[] TENS = {
"twenty",
"thirty",
"fourty",
"fifty",
"sixty",
"seventy",
"eighty",
"ninty"
};
public static String numberToWord( final int number ){
if ( number < 0 )
throw new IllegalArgumentException( "Number too low" );
if ( number > 100 )
throw new IllegalArgumentException( "Number too high" );
if ( number < 20 )
return NUMBERS[number];
if ( number == 100 )
return NUMBERS[20];
return TENS[number/10-2] + ((number%10>0)?(" "+NUMBERS[number%10]):"");
}
public static void main(String[] args) {
for ( int i = 0; i <= 100; ++i )
System.out.println( numberToWord( i ) );
}
}