java將金額數字轉換成對應的漢字
阿新 • • 發佈:2019-01-25
記得這是一道面試題,今天中午花時間寫了下,貼程式碼:
import java.util.Scanner;
public class NumberToWord {
private static String input;
private static Scanner sc;
private static String[] num = {"零","一","二","三","四","五","六","七","八","九","十"};
private static String[] unit = {"","十","百","千","萬" ,"十","百","千","億"};
private static String[] result;
private static void input() {
System.out.println("請輸入一串數字最多9位");
sc = new Scanner(System.in);
input = sc.nextLine();
}
public static String transfer(String input) {
String out = "";
result = new String[input.length()];
int length = result.length;
for(int i = 0; i< length; i++) {
result[i] = String.valueOf(input.charAt(i));
}
for(int i = 0; i< length; i++) {
int back;
if (!result[i].equals("0")) {
back = length - i - 1;
out += num[Integer.parseInt(result[i])];
out += unit[back];
} else {
//最後一位不考慮
if(i == (length - 1)) {
if(length > 4 && result[length - 1].equals("0") && result[length - 2].equals("0") && result[length - 3].equals("0") && result[length - 4].equals("0")){
out += unit[4];
}
} else {
//九位數,千萬,百萬,十萬,萬位都為0,則不加“萬”
if(length == 9 && result[1].equals("0") && result[2].equals("0") && result[3].equals("0") && result[4].equals("0")) {
} else {
//大於萬位,連著的兩個數不為0,萬位等於0則加上“萬”
if(length > 4 && !result[i+1].equals("0") && result[length -5].equals("0")){
out += unit[4];
}
}
//萬位之後的零顯示
if(i == length -4 && !result[i+1].equals("0")) {
out += num[0];
}
}
}
}
return out;
}
public static void main(String[] args) {
input();
System.out.println(transfer(input));
}
}
執行結果:
請輸入一串數字最多9位
10002345
一千萬二千三百四十五
請輸入一串數字最多9位
972364521
九億七千二百三十六萬四千五百二十一
請輸入一串數字最多9位
300000
三十萬