ホームページ > Java > &#&チュートリアル > Java で数値を単語に変換するにはどうすればよいですか?

Java で数値を単語に変換するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-21 18:39:17
オリジナル
970 人が閲覧しました

How can I convert numbers to words in Java?

Java で数値を単語に変換する

はじめに:

数値を数値に変換する必要があるシナリオによく遭遇します。対応する単語表現。 Java には、この変換を直接実行する組み込み関数はありません。ただし、少しのカスタム コードを使用すると、要件を満たすソリューションを開発できます。

カスタム ソリューション:

変換プロセス。アプローチを詳しく見てみましょう:

ステップ 1: 小さい数値 (0 ~ 99) を処理する

  • 0 ~ 19 の数字の名前 (numNames) を含む配列を作成します。
  • 「20」や「30」のような数字を処理するには、10 の名前を含む別の配列を作成します(tensNames).

ステップ 2: 2 桁の数値を変換する

  • 数値を 100 で割って、百の位 (百の位) を取得します。
  • モジュラスを 100 で割ると、残りの 2 桁が得られます。 (剰余).
  • numNames から百の位の名前を取得します。
  • ループを使用して、numNames と 10sNames を使用して残りの 2 桁の単語表現を構築します。

ステップ 3: 3 桁の変換数値

  • 3 桁の数値についてこのプロセスを繰り返します。
  • 1000 で割って千の数を取得し、モジュラス除算を実行して残りの 3 桁を取得します。
  • numNames の千の位の名前と「thousand」をresult.

ステップ 4: 大きな数値を変換する

  • 百万、十億などについても同じプロセスに従います。
  • 数値を次の値で割ります。対応する桁数を抽出するには、適切な 10 の累乗を使用します。
  • モジュラス除算を使用して、残りの桁。
  • 正しい大きさ (例: "million"、"billion") を結果に追加します。

コード例:

このコードは、カスタムソリューション:

import java.text.DecimalFormat;

public class EnglishNumberToWords {

  private static final String[] tensNames = {
    "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"
  };

  private static final String[] numNames = {
    "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
    "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen",
    "seventeen", "eighteen", "nineteen"
  };

  private EnglishNumberToWords() {}

  private static String convertLessThanOneThousand(int number) {
    // Handle numbers between 0 and 99
    String soFar;
    if (number % 100 < 20){
      soFar = numNames[number % 100];
      number /= 100;
    }
    else {
      soFar = numNames[number % 10];
      number /= 10;
      soFar = tensNames[number % 10] + soFar;
      number /= 10;
    }
    if (number == 0) return soFar;
    return numNames[number] + " hundred" + soFar;
  }

  public static String convert(long number) {
    if (number == 0) { return "zero"; }
    String snumber = Long.toString(number);
    String mask = "000000000000";
    DecimalFormat df = new DecimalFormat(mask);
    snumber = df.format(number);
    // Handle billions, millions, hundred thousands, and thousands separately
    int billions  = Integer.parseInt(snumber.substring(0,3));
    int millions  = Integer.parseInt(snumber.substring(3,6));
    int hundredThousands = Integer.parseInt(snumber.substring(6,9));
    int thousands = Integer.parseInt(snumber.substring(9,12));
    String tradBillions;
    switch (billions) {
    case 0:
      tradBillions = "";
      break;
    case 1 :
      tradBillions = convertLessThanOneThousand(billions) + " billion ";
      break;
    default :
      tradBillions = convertLessThanOneThousand(billions) + " billion ";
    }
    String result =  tradBillions;
    String tradMillions;
    switch (millions) {
    case 0:
      tradMillions = "";
      break;
    case 1 :
      tradMillions = convertLessThanOneThousand(millions) + " million ";
      break;
    default :
      tradMillions = convertLessThanOneThousand(millions) + " million ";
    }
    result =  result + tradMillions;
    String tradHundredThousands;
    switch (hundredThousands) {
    case 0:
      tradHundredThousands = "";
      break;
    case 1 :
      tradHundredThousands = "one thousand ";
      break;
    default :
      tradHundredThousands = convertLessThanOneThousand(hundredThousands) + " thousand ";
    }
    result =  result + tradHundredThousands;
    String tradThousand;
    tradThousand = convertLessThanOneThousand(thousands);
    result =  result + tradThousand;
    return result.replaceAll("^\s+", "").replaceAll("\b\s{2,}\b", " ");
  }
}
ログイン後にコピー

使用法:

System.out.println(EnglishNumberToWords.convert(123456789));
// Output: "one hundred twenty three million four hundred fifty six thousand seven hundred eighty nine"
ログイン後にコピー

結論:

このカスタム ソリューションを使用すると、数値を単語表現に簡単かつ効率的に変換できます。

以上がJava で数値を単語に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート