java金额 数字转大写

发布时间:2018-04-13作者:spider阅读(532)

java金额 数字转大写。

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    
    /** 
     * 把输入的数字转换成人民币大写的形式 
     */
    public class ChangeNumToRMB {
    
    	String moneyStrs[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		boolean isDebug = true;
    		while (isDebug) {
    			int num = 0;
    			String changedStr = "";
    			System.out.println("请输入需要转换的金额:");
    			BufferedReader br = new BufferedReader(new InputStreamReader(
    					System.in));
    			boolean isWrongInput = true;
    			while (isWrongInput) {
    				try {
    					String str = br.readLine();
    
    					num = Integer.parseInt(str);
    
    				} catch (Exception e) {
    					System.out.println("输入数字有误,必须是:0" + "到" + Integer.MAX_VALUE
    							+ " 的整数");
    
    					// TODO Auto-generated catch block
    					// e.printStackTrace();
    					isWrongInput = true;
    					continue;
    				}
    				isWrongInput = false;
    			}
    			ChangeNumToRMB chan = new ChangeNumToRMB();
    			changedStr = chan.getChangedString(num);
    		}
    	}
    
    	public String getChangedString(int num) {
    
    		// Money用于存放输入的金额数
    		int moneyNum = num;
    		String moneyStr = "";
    		System.out.println("输入的钱数是:");
    		if (moneyNum < 0) {
    			System.out.println("数字必须大于零");
    		} else if (moneyNum == 0) {
    			moneyStr = "零元";
    		}
    		// 只有四位数,即最大9999.小于10000
    		else if (moneyNum < 10000) {
    			moneyStr = this.getFourNumStr(moneyNum) + "元";
    		}
    		// 大于一万,小于一千万
    		else if (moneyNum <= 10000000)// && moneyNum>10000)
    		{
    
    			int firstFourNum, lastFourNum;
    			firstFourNum = moneyNum / 10000;
    			lastFourNum = moneyNum % 10000;
    			String firstFourStr = this.getFourNumStr(firstFourNum);
    			String lastFourStr = this.getFourNumStr(lastFourNum);
    			if (!lastFourStr.contains("仟"))
    				lastFourStr = "零" + lastFourStr;
    			moneyStr = firstFourStr + "万" + lastFourStr + "元";
    		}
    		// 大于一千万.即上亿但小于最大整数
    		else if (moneyNum < Integer.MAX_VALUE)// && moneyNum>10000000)
    		{
    			int firstFourNum, secondFourNum, lastFourNum;
    			firstFourNum = moneyNum / 100000000;
    			secondFourNum = (moneyNum / 10000) % 1000;
    			lastFourNum = moneyNum % 10000;
    			String firstFourStr = this.getFourNumStr(firstFourNum);
    			String secondFourStr = this.getFourNumStr(secondFourNum);
    			String lastFourStr = this.getFourNumStr(lastFourNum);
    			if (!lastFourStr.contains("仟"))
    				lastFourStr = "零" + lastFourStr;
    			if (!secondFourStr.contains("仟"))
    				secondFourStr = "零" + secondFourStr;
    			moneyStr = firstFourStr + "亿" + secondFourStr + "万" + lastFourStr
    					+ "元";
    		} else
    			System.out.println("someting    is wrong");
    		System.out.println(moneyStr);
    		return moneyStr;
    	}
    
    	public String getFourNumStr(int fourNum) {
    		int qian, bai, shi, ge;
    		ge = fourNum % 10;
    		shi = (fourNum % 100) / 10;
    		bai = (fourNum % 1000) / 100;
    		qian = fourNum / 1000;
    		String strTemp = "";
    		if (qian != 0) {
    
    			strTemp = strTemp.concat(moneyStrs[qian] + "仟");
    			strTemp = strTemp.concat(moneyStrs[bai] + "佰");
    			strTemp = strTemp.concat(moneyStrs[shi] + "什");
    			strTemp = strTemp.concat(moneyStrs[ge]);
    
    			strTemp = strTemp.replace("零佰", "零");
    			strTemp = strTemp.replace("零什", "零");
    			strTemp = strTemp.replace("零零", "零");
    			strTemp = strTemp.replace("零零", "零");
    
    			if (strTemp.endsWith("零"))
    				strTemp = strTemp.substring(0, strTemp.length() - 1);
    		} else if (bai != 0) {
    			strTemp = strTemp.concat(moneyStrs[bai] + "佰");
    			strTemp = strTemp.concat(moneyStrs[shi] + "什");
    			strTemp = strTemp.concat(moneyStrs[ge]);
    
    			strTemp = strTemp.replace("零什", "零");
    			strTemp = strTemp.replace("零零", "零");
    
    			if (strTemp.endsWith("零"))
    				strTemp = strTemp.substring(0, strTemp.length() - 1);
    		} else if (shi != 0) {
    
    			strTemp = strTemp.concat(moneyStrs[shi] + "什");
    			strTemp = strTemp.concat(moneyStrs[ge]);
    
    			if (strTemp.endsWith("零"))
    				strTemp = strTemp.substring(0, strTemp.length() - 1);
    		} else
    			strTemp.concat(moneyStrs[ge]);
    		return strTemp;
    	}
    }


    文章转载自:http://www.open-open.com/code/view/1420038311421

0 +1

版权声明

本文章为系统自动抓取,如涉及您的版权,请联系博主进行下架处理

 Java  源码

 请文明留言

0 条评论