ss - githubcopyright/test GitHub Wiki
package test;
import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Map;
public class testB02_2 {
public void show(Long input) {
String output = "";
if (input == 0) output = transToZhNum("0") ; else {
String inputStr = String.valueOf(input);
if (inputStr.length() <= 13) {
String prefix = "";
for (int i = 0; i < 13-inputStr.length(); i++ ) // 只轉換到兆,補滿13位 prefix = prefix + "*"; inputStr = prefix + inputStr;
String[] fullStr = inputStr.split("");
ArrayList<String[]> groups = new ArrayList<String[]>(); // 分組:{[0,兆],[1,億],[2,萬],[3,元]} groups.add(Arrays.copyOfRange(fullStr, 0, 1)); groups.add(Arrays.copyOfRange(fullStr, 1, 5)); groups.add(Arrays.copyOfRange(fullStr, 5, 9)); groups.add(Arrays.copyOfRange(fullStr, 9, 13));
for (int i = 0; i < 4; i++ ) {
String chkZero = "";
for (String t : groups.get(i)) if (!"*".equals(t)) chkZero = chkZero + t;
if (chkZero.length()>0 && Integer.parseInt(chkZero)>0) // 規則:整組都是補位或是0,就不顯示 output = output + transZh(i, groups.get(i)); } } }
if (output.length()>0) output = output + "元";
if(forTest(output)) // 驗證用,用完可刪除 System.out.println("true"); else System.out.println(input + " != " + output);
}
private String transZh(int groupIndex,String[] group) {
String result ="";
for (int i=0 ; i<group.length ; i++ ) {
if ( !"*".equals(group[i]) ) { if ( !"0".equals(group[i]) ) {
if (groupIndex==0) result = result + transToZhNum(group[i]); else result = result + transToZhNum(group[i]) + getDigit(i); } else { if ( i < group.length-1 && !"0".equals(group[i+1]) ) result = result + transToZhNum(group[i]); } } }
if (result.length()>0) // 補上群組單位 result = result + getGroupDigit(groupIndex);
return result; }
private String transToZhNum(String key) { Map<String, String> numberMap = new HashMap<>(); numberMap.put("0","零"); numberMap.put("1","壹"); numberMap.put("2","貳"); numberMap.put("3","參"); numberMap.put("4","肆"); numberMap.put("5","伍"); numberMap.put("6","陸"); numberMap.put("7","柒"); numberMap.put("8","捌"); numberMap.put("9","玖");
return numberMap.get(key); }
private String getGroupDigit(Integer key) { Map<Integer, String> groupDigitMap = new HashMap<>(); groupDigitMap.put(0, "兆"); groupDigitMap.put(1, "億"); groupDigitMap.put(2, "萬"); groupDigitMap.put(3, "");
return groupDigitMap.get(key); }
private String getDigit(Integer key) { Map<Integer, String> digitMap = new HashMap<>(); digitMap.put(0, "仟"); digitMap.put(1, "佰"); digitMap.put(2, "拾"); digitMap.put(3, "");
return digitMap.get(key); }
/** * 驗證用,用完可刪除 * @param result * @return */ private boolean forTest(String result) { ArrayList<String> arr = new ArrayList<String>(); arr.add("伍萬零貳佰捌拾元"); arr.add("伍佰柒拾萬貳仟零肆拾元"); arr.add("柒仟零參億伍仟萬肆仟壹佰零壹元"); arr.add("壹兆零參億伍仟萬肆仟壹佰零壹元"); arr.add("伍萬零貳拾元"); arr.add("伍萬元"); arr.add("零元"); arr.add("壹元"); arr.add("玖兆元"); arr.add("玖兆零壹元");
if (arr.contains(result)) return true;
return false; }
}