1. 程式人生 > >java將金額數字轉換成對應的漢字

java將金額數字轉換成對應的漢字

記得這是一道面試題,今天中午花時間寫了下,貼程式碼:

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
三十萬