在Java中将数字转换为单词

时间:2014-02-21 20:41:41

标签: 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(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");

我不想每次都使用if(num == x)。我的验证陷阱,以确保它在0到100之间工作正常。我只是不确定如何接近剩下的部分。这就是我可以打印的内容:

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)

我需要34打印&#34;三十四&#34; 任何反馈将不胜感激!

3 个答案:

答案 0 :(得分:1)

你应该看一下0到100之间数字的模式。你会发现:

  • 单位数字:从字符串拉[]数字= {“零”,“一”,二,......,“十”}
  • 青少年拉从String [] teen = {“eleven”,“12”,...,“nineteen”}
  • 对于较大的数字除以10并从{“二十”,“三十”,......“九十”}拉出;然后,如果数字除以10时有余数,则在上面的数字中添加数字部分“ - ”+拉。

答案 1 :(得分:0)

您也可以为1-19和100之间的数字创建单独的变量。对于20-99,它们具有可以使用字符串连接组合的前缀和后缀,并且可以通过前后数字来识别。 / p>

答案 2 :(得分:0)

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 ) );
    }
}