我的程序是将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; 任何反馈将不胜感激!
答案 0 :(得分:1)
你应该看一下0到100之间数字的模式。你会发现:
答案 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 ) );
}
}