比之前版本更加精簡
Money.java
package com.zx.simple;
import java.util.concurrent.Delayed;
/**
* @author 作者
* @version 創建時間:2019年10月19日 上午10:21:42
* @email [email protected] 類說明
*/
public class Util {
static String dealThree(int num) {// 處理三位數103
StringBuffer sb = new StringBuffer();
if (num == 0) {// 全爲零
return "";
}
if (num / 100 == 0) {// 首位爲零
sb.append(" and ");
if (num % 100 <= 20 || num % 10 == 0) {// 如果該數爲1-20間的數或者爲幾十的數
sb.append(getUp(num));
} else {//
int num1 = (num % 100) - (num % 10);
sb.append(getUp(num1));
sb.append("-");
sb.append(getUp(num % 10));
}
} else {// 120,h=1
int h = num / 100;
sb.append(getUp(h) + " hundred ");
int cache = (num % 100) / 10;// 判斷中間的數是否爲零
if (cache == 0) {// 如果爲零
if (num % 100 == 0) {// 整百
sb.append(getUp(num % 100));
} else {// 非整百
sb.append(" and ");
sb.append(getUp(num % 10));
}
} else {
if (num % 100 <= 20 || num % 10 == 0) {// 如果該數爲1-20間的數或者爲幾十的數 num == 120
sb.append(" and ");
sb.append(getUp(num % 100));
} else {
cache = (num % 100) - (num % 10);// 得到80
sb.append(" and ");
sb.append(getUp(cache));
sb.append("-");
sb.append(getUp(num % 10));
}
}
}
return sb.toString();
}
public static String billion(String str) {// 123456789000
StringBuffer sb = new StringBuffer();
int cache = 0;
int last = 0;
if (str.length() == 10) {
cache = str.charAt(0) + 0;
last = Integer.parseInt(str.substring(1, 10));
} else if (str.length() == 11) {
cache = Integer.parseInt(str.substring(0, 2));
last = Integer.parseInt(str.substring(2, 11));
} else if (str.length() == 12) {
cache = Integer.parseInt(str.substring(0, 3));
last = Integer.parseInt(str.substring(3, 12));
}
sb.append(dealThree(cache)).append(" billion ");
sb.append(million(last));
return sb.toString();
}
public static String million(int num) {
StringBuffer sb = new StringBuffer();
sb.append(dealThree(num / 1000000));
if (num / 100000 != 0) {
sb.append(" million ");
}
sb.append(thousand(num % 1000000));
return sb.toString();
}
public static String thousand(int num) {
StringBuffer sb = new StringBuffer();
sb.append(dealThree(num / 1000));
if (num / 1000 != 0) {
sb.append(" thousand ");
}
sb.append(one(num % 1000));
return sb.toString();
}
public static StringBuffer hundred(int num) {
return null;
}
public static String one(int num) {
StringBuffer sb = new StringBuffer();
sb.append(Util.dealThree(num));
return sb.toString();
}
public static String getUp(int num) {
String str = "";
switch (num) {
case 1:
str = "ONE";
break;
case 2:
str = "TWO";
break;
case 3:
str = "THREE";
break;
case 4:
str = "FOUR";
break;
case 5:
str = "FIVE";
break;
case 6:
str = "SIX";
break;
case 7:
str = "SEVEN";
break;
case 8:
str = "EIGHT";
break;
case 9:
str = "NINE";
break;
case 10:
str = "TEN";
break;
case 11:
str = "ELEVN";
break;
case 12:
str = "TWELVE";
break;
case 13:
str = "THIRTEEN";
break;
case 14:
str = "FOURTEEN";
break;
case 15:
str = "FIFTEEN";
break;
case 16:
str = "SIXTEEN";
break;
case 17:
str = "SEVENTEEN";
break;
case 18:
str = "EIGHTEEN";
break;
case 19:
str = "NINETEEN";
break;
case 20:
str = "TWENTY";
break;
case 30:
str = "THIRTY";
break;
case 40:
str = "FORTY";
break;
case 50:
str = "FIFTY";
break;
case 60:
str = "SIXTY";
break;
case 70:
str = "SEVENTY";
break;
case 80:
str = "EIGHTY";
break;
case 90:
str = "NINETY";
break;
default:
break;
}
return str;
}
}
Util.java
package com.zx.simple;
import java.util.concurrent.Delayed;
/**
* @author 作者
* @version 創建時間:2019年10月19日 上午10:21:42
* @email [email protected] 類說明
*/
public class Util {
static String dealThree(int num) {// 處理三位數103
StringBuffer sb = new StringBuffer();
if (num == 0) {// 全爲零
return "";
}
if (num / 100 == 0) {// 首位爲零
sb.append(" and ");
if (num % 100 <= 20 || num % 10 == 0) {// 如果該數爲1-20間的數或者爲幾十的數
sb.append(getUp(num));
} else {//
int num1 = (num % 100) - (num % 10);
sb.append(getUp(num1));
sb.append("-");
sb.append(getUp(num % 10));
}
} else {// 120,h=1
int h = num / 100;
sb.append(getUp(h) + " hundred ");
int cache = (num % 100) / 10;// 判斷中間的數是否爲零
if (cache == 0) {// 如果爲零
if (num % 100 == 0) {// 整百
sb.append(getUp(num % 100));
} else {// 非整百
sb.append(" and ");
sb.append(getUp(num % 10));
}
} else {
if (num % 100 <= 20 || num % 10 == 0) {// 如果該數爲1-20間的數或者爲幾十的數 num == 120
sb.append(" and ");
sb.append(getUp(num % 100));
} else {
cache = (num % 100) - (num % 10);// 得到80
sb.append(" and ");
sb.append(getUp(cache));
sb.append("-");
sb.append(getUp(num % 10));
}
}
}
return sb.toString();
}
public static String billion(String str) {// 123456789000
StringBuffer sb = new StringBuffer();
int cache = 0;
int last = 0;
if (str.length() == 10) {
cache = str.charAt(0) + 0;
last = Integer.parseInt(str.substring(1, 10));
} else if (str.length() == 11) {
cache = Integer.parseInt(str.substring(0, 2));
last = Integer.parseInt(str.substring(2, 11));
} else if (str.length() == 12) {
cache = Integer.parseInt(str.substring(0, 3));
last = Integer.parseInt(str.substring(3, 12));
}
sb.append(dealThree(cache)).append(" billion ");
sb.append(million(last));
return sb.toString();
}
public static String million(int num) {
StringBuffer sb = new StringBuffer();
sb.append(dealThree(num / 1000000));
if (num / 100000 != 0) {
sb.append(" million ");
}
sb.append(thousand(num % 1000000));
return sb.toString();
}
public static String thousand(int num) {
StringBuffer sb = new StringBuffer();
sb.append(dealThree(num / 1000));
if (num / 1000 != 0) {
sb.append(" thousand ");
}
sb.append(one(num % 1000));
return sb.toString();
}
public static StringBuffer hundred(int num) {
return null;
}
public static String one(int num) {
StringBuffer sb = new StringBuffer();
sb.append(Util.dealThree(num));
return sb.toString();
}
public static String getUp(int num) {
String str = "";
switch (num) {
case 1:
str = "ONE";
break;
case 2:
str = "TWO";
break;
case 3:
str = "THREE";
break;
case 4:
str = "FOUR";
break;
case 5:
str = "FIVE";
break;
case 6:
str = "SIX";
break;
case 7:
str = "SEVEN";
break;
case 8:
str = "EIGHT";
break;
case 9:
str = "NINE";
break;
case 10:
str = "TEN";
break;
case 11:
str = "ELEVN";
break;
case 12:
str = "TWELVE";
break;
case 13:
str = "THIRTEEN";
break;
case 14:
str = "FOURTEEN";
break;
case 15:
str = "FIFTEEN";
break;
case 16:
str = "SIXTEEN";
break;
case 17:
str = "SEVENTEEN";
break;
case 18:
str = "EIGHTEEN";
break;
case 19:
str = "NINETEEN";
break;
case 20:
str = "TWENTY";
break;
case 30:
str = "THIRTY";
break;
case 40:
str = "FORTY";
break;
case 50:
str = "FIFTY";
break;
case 60:
str = "SIXTY";
break;
case 70:
str = "SEVENTY";
break;
case 80:
str = "EIGHTY";
break;
case 90:
str = "NINETY";
break;
default:
break;
}
return str;
}
}