用java來轉換人民幣
阿新 • • 發佈:2018-12-12
實驗目的:
編寫一個程式,將浮點數轉換成人民幣讀法字串,例如,將1006.333轉換為壹千零陸元參角參分。
實驗步驟:
import java.util.Scanner; public class Rmb{ private String[] hanArr={"零","壹","貳","叄","肆","伍","陸","柒","捌","玖"}; private String[] unitArr_Integer={"拾","佰","仟","萬"}; private String[] unitArr_Decimal={"分","角"}; //針對整數部分 private String toHanStr_Integer(String numStr){ String result=""; int numLen=numStr.length(); for(int i=0;i<numLen;i++){ int num=numStr.charAt(i)-48; if(i!=numLen-1&&num!=0){ result+=(hanArr[num]+unitArr_Integer[numLen-2-i]); } else{ if(hanArr[num].equals("零")&&result.substring(result.length()-1,result.length()).equals("零")){ continue; } else{ result+=hanArr[num]; } } } return result; } //針對小數部分 private String toHanStr_Decimal(String numStr) { String result=""; int numLen = numStr.length(); for (int i = 0; i < numLen; i++) { int num = numStr.charAt(i) - 48; if (i != numLen && num != 0) { result += (hanArr[num] + unitArr_Decimal[numLen - 1 - i]); } } return result; } //對整數和小數進行分離,用String[]作為返回值型別 private String[] divide(double num) { long zheng = (long) num;//強制轉換,得到整數部分 long xiao = Math.round((num - zheng) * 100);//round函式,四捨五入接近整數 return new String[] { zheng + "", String.valueOf(xiao) }; } public static void main(String[] args) { System.out.println("該程式可以得到整數部分最大為五位的人民幣讀法轉換。"+"\n"); System.out.print("讀入一個整數部分最大為五位的數:"); Rmb nr = new Rmb();//根據類Rmb建立一個nr物件 Scanner node=new Scanner(System.in); double input=node.nextDouble(); System.out.println("要測的人民幣金額為:"+input); String[] str = nr.divide(input);//將整數部分和小數部分分開 String Integer = nr.toHanStr_Integer(str[0]);//對整數部分進行人民幣讀法轉換 String Decimal = nr.toHanStr_Decimal(str[1]);//對小數部分進行人民幣讀法轉換 String Id = Integer + "元" + Decimal;//將整數小數組合在一起 System.out.println(Id); } }