一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java實現數字轉成英文的方法

Java實現數字轉成英文的方法

2019-12-19 13:21csdn_2013 JAVA教程

這篇文章主要介紹了Java實現數字轉成英文的方法,涉及java數組與字符串的相關操作技巧,需要的朋友可以參考下

本文實例講述了Java實現數字轉成英文的方法。分享給大家供大家參考。具體分析如下:

英文數詞,按3位3位區分

?
1
2
3
4
5
6
7
8
9
Hundred: 100
Thousand:1,000
Million: 1,000,000
Billion: 1,000,000,000
Trillion: 1,000,000,000,000
Quintillion: 1,000,000,000,000,000,000
Sextillion: 1,000,000,000,000,000,000,000
Nonillion: 1,000,000,000,000,000,000,000,000,000,000
Centillion: 1 followed by 303 zeros

所以把數字字符串按3位分割,分別解析

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
public class NumUtil {
 public static final String[] enNum = { // 基本數詞表
 "zero", "one", "tow", "three", "four", "five", "six", "seven", "eight",
  "nine", "ten", "eleven", "twelve", "thirteen", "fourteen",
  "fifteen", "sixteen", "seventeen", "eighteen", "nineteen",
  "twenty", "", "", "", "", "", "", "", "", "", "thirty", "", "", "",
  "", "", "", "", "", "", "fourty", "", "", "", "", "", "", "", "",
  "", "fifty", "", "", "", "", "", "", "", "", "", "sixty", "", "",
  "", "", "", "", "", "", "", "seventy", "", "", "", "", "", "", "",
  "", "", "eighty", "", "", "", "", "", "", "", "", "", "ninety" };
 public static final String[] enUnit = { "hundred", "thousand", "million",
  "billion", "trillion", "quintillion" }; // 單位表
 public static void main(String[] args) {
 System.out.println(analyze(1)); // 測試數據
 System.out.println(analyze(21));
 System.out.println(analyze(105));
 System.out.println(analyze(3250));
 System.out.println(analyze(47826));
 System.out.println(analyze(56945781));
 }
 public static String analyze(long num) {
 // long型參數,
 return analyze(String.valueOf(num));
 // 因為long型有極限,所以以字符串參數方法為主
 }
 public static String analyze(String num) {
 // 數字字符串參數
 // 判斷字符串是否為數字
 if (!num.matches("\\d+")) {
  return String.format("%s is not number", num);
 }
 num = num.replaceAll("^[0]*([1-9]*)", "$1");
 // 把字符串前面的0去掉
 if (num.length() == 0) {
 // 如果長度為0,則原串都是0
  return enNum[0];
 } else if (num.length() > 9) {
 // 如果大于9,即大于999999999,題目限制條件
  return "too big";
 }
 // 按3位分割分組
 int count = (num.length() % 3 == 0) ? num.length() / 3
  : num.length() / 3 + 1;
 if (count > enUnit.length) {
  return "too big";
 } // 判斷組單位是否超過,
 // 可以根據需求適當追加enUnit
 String[] group = new String[count];
 for (int i = num.length(), j = group.length - 1; i > 0; i -= 3) {
  group[j--] = num.substring(Math.max(i - 3, 0), i);
 }
 StringBuilder buf = new StringBuilder(); // 結果保存
 for (int i = 0; i < count; i++) { // 遍歷分割的組
  int v = Integer.valueOf(group[i]);
  if (v >= 100) { // 因為按3位分割,所以這里不會有超過999的數
  buf.append(enNum[v / 100]).append(" ").append(enUnit[0])
   .append(" ");
  v = v % 100; // 獲取百位,并得到百位以后的數
  if (v != 0) {
   buf.append("and ");
  } // 如果百位后的數不為0,則追加and
  }
  if (v != 0) { // 前提是v不為0才作解析
  if (v < 20 || v % 10 == 0) {
  // 如果小于20或10的整數倍,直接取基本數詞表的單詞
   buf.append(enNum[v]).append(" ");
  } else { // 否則取10位數詞,再取個位數詞
   buf.append(enNum[v - v % 10]).append(" ");
   buf.append(enNum[v % 10]).append(" ");
  }
  if (i != count - 1) { // 百位以上的組追加相應的單位
   buf.append(enUnit[count - 1 - i]).append(" ");
  }
  }
 }
 return buf.toString().trim(); // 返回值
 }
}

希望本文所述對大家的java程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产男技师 | 天堂bt在线 | 97大香伊在人人线色 | 国产精品色拉拉免费看 | 欧美一区二区三区四区视频 | 国产成人综合精品一区 | 好湿好紧好多水c | 性欧美f | 亚洲第一男人网站 | 无遮挡免费h肉动漫在线观看 | 男人午夜免费视频 | gay台湾无套男同志可播放 | 日本zzzzwww大片免费 | 日韩亚洲欧美一区二区三区 | 喜马拉雅听书免费版 | 亚洲日韩欧美一区二区在线 | 美女天天操 | 亚洲成人三级 | 91麻豆精品国产自产在线 | 我们日本在线观看免费动漫下载 | www红色一片在线观看版 | 亚洲成色WWW久久网站夜月 | 日韩欧美高清一区 | 免费看视频高清在线观看 | 日本捏胸吃奶视频免费 | 三级理论在线播放大全 | 99久久一香蕉国产线看观看 | 麻豆视频入口 | 我把校花黑色蕾丝胸罩脱了 | 日本国产最新一区二区三区 | 三年片韩国在线 | 国产一区二区三区久久精品 | chinesemature老女人| 亚洲天堂日韩在线 | 成人亚洲精品一区 | 日本成日本片人免费 | 四虎黄色影视库 | www.色香蕉| 成人在线观看一区 | 国产欧美一区二区成人影院 | 秋霞啪啪片 |