Javaで(1~100000000)までの数字を英語に変換する方法を教えてください。
(浮動小数点も含める)
0~100まではできたのですが浮動小数点も含めるやり方が全く分かりません。
一応昨日書いたソースコードです。
import java.io.*;
public class EnglishNumber {
public static void main(String[] args) {
try {
String input = "";
while (!(input = inputNumber()).equals("")) {
String number = toEnglishNumber(input);
System.out.println(number);
}
} catch (IOException ie) {
ie.printStackTrace();
} catch (NumberFormatException ne) {
System.out.println("数字でないか、0から99の数字ではありません。");
}
}
public static String inputNumber() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("0から99の数字を入力してください。");
return br.readLine();
}
public static String toEnglishNumber(String input) throws NumberFormatException {
final String[] eNum1 = {"zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine",
"ten", "eleven", "twelve", "thirteen", "fourteen",
"fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
StringBuffer number = null;
int num = Integer.parseInt(input);
if (num < 0 || num > 99) {
throw new NumberFormatException();
}
if (num < 20) {
number = new StringBuffer(eNum1[num]);
} else {
final String[] eNum2 = {"twenty", "thirty", "forty", "fifty", "sixty",
"seventy", "eighty", "ninety"};
number = new StringBuffer(eNum2[input.charAt(0) - 50]);
if (input.charAt(1) != '0') {
number.append("-").append(eNum1[input.charAt(1) - 48]);
}
}
return number.toString();
}
}
あなたの回答
tips
プレビュー