Прежде всего взять сотни место цифры разделяющего на 100 и распечатать соответствующий номер с помощью метода numberToWord((number/100), " HUNDRED");
так номер/100 будет находиться в диапазоне от 0 до 9, так что будет печатать цифры в слове каскадного по СТО вызову.
Теперь вы ушли с двухзначным номером, так что вы напрямую звоните numberToWord((number % 100), " ");
, так как мы принимаем по модулю 100 номеров, поэтому он будет пропускать только две цифры. if (num > 19) {System.out.print(tens[num/10] + " " + ones[num % 10]);}
тогда он займет десятки мест и напечатает десятки слов, объединенных одними. else {System.out.print(ones[num]);}
непосредственно печатает слово от 1 до 19 из массива.
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
int number = 0;
Scanner scanner = new Scanner(System.in);
System.out.print("Please type a number between 0 and 999 OR type -1 to exit: ");
number = scanner.nextInt();
while(number!=-1){
if(number>=0 && number<=999){
if(number==0){
System.out.print("NUMBER AFTER CONVERSION:\tZERO");
} else {
System.out.print("NUMBER AFTER CONVERSION:\t");
numberToWord(((number/100) % 10), " HUNDRED");
numberToWord((number % 100), " ");
}
} else{
System.out.print("NUMBER OUT OF RANGE");
}
System.out.print("\nPlease type a number between 0 and 999 OR type -1 to exit: ");
number = scanner.nextInt();
}
}
public static void numberToWord(int num, String val) {
String ones[] = {" ", " ONE", " TWO", " THREE", " FOUR", " FIVE", " SIX", " SEVEN", " EIGHT", " NINE", " TEN", " ELEVEN", " TWELVE", " THIRTEEN", " FOURTEEN", " FIFTEEN", " SIXTEEN", " SEVENTEEN", " EIGHTEEN", " NINETEEN"
};
String tens[] = {" ", " ", " TWENTY", " THIRTY", " FOURTY", " FIFTY", " SIXTY", " SEVENTY", " EIGHTY", " NINETY"};
if (num > 19) {
System.out.print(tens[num/10] + " " + ones[num % 10]);
} else {
System.out.print(ones[num]);
}
if (num > 0) {
System.out.print(val);
}
}
}
Пример вывода:
Please type a number between 0 and 999 OR type -1 to exit: 563
NUMBER AFTER CONVERSION: FIVE HUNDRED SIXTY THREE
Please type a number between 0 and 999 OR type -1 to exit: 45
NUMBER AFTER CONVERSION: FOURTY FIVE
Please type a number between 0 and 999 OR type -1 to exit: 6
NUMBER AFTER CONVERSION: SIX
Please type a number between 0 and 999 OR type -1 to exit: 0
NUMBER AFTER CONVERSION: ZERO
Please type a number between 0 and 999 OR type -1 to exit: -1
exit
Так что, ** специально ** являются вы имеете проблема с? –
новичок в массивах и не уверен, как настроить цикл, поэтому он останавливается при вводе -1. – sleepy
. Моя первоначальная реакция состояла в том, чтобы разбить число на составные части (единицы, десятки, сотни), а затем выполнить поиск по карте для каждого компонента. Что ты уже испробовал? –