如何在 Java 中將數字轉換為單字?
Java 中數字轉換為單字
簡介:
我們常常會遇到需要將數值轉換為單字的場景他們對應的單字表示。在 Java 中,沒有直接執行此轉換的內建函數。但是,透過一些自訂程式碼,我們可以開發一個滿足我們要求的解決方案。
自訂解決方案:
我們可以建立一個自訂類別來處理轉換過程。讓我們分解一下這個方法:
第 1 步:處理小數字(0 到 99)
- 建立一個包含 0 到 19 數字名稱的陣列 (numNames)。
- 要處理「二十」和「三十」這樣的數字,請建立另一個包含十個名稱的陣列(tensNames)。
第 2 步:轉換兩位數
- 將數字除以 100,得到百位數。
- 模數除以 100 得到剩下的兩位數(餘數)。
- 從 numNames 中取得百位數字的名稱。
- 使用迴圈使用 numNames 和tensNames 建構剩餘兩位數字的單字表示。
第三步:轉換三位數
- 重複三位數的過程。
- 除以 1000 得到千位(千),然後進行模除得到剩餘的三位數。
- 附加 numNames 中的千位數名稱和 "千」到結果。
第 4 步:轉換更大數字
- 對百萬、十億等遵循相同的過程。
- 將數字除以適當的 10 次方以提取相應的位數。
- 模除以得到剩餘的數字。
- 附加正確的大小(例如,“百萬”, “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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

在使用IntelliJIDEAUltimate版本啟動Spring...

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...
