在Java中将数字转换为单词

在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

我的程序是将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(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 ) );
    }
}