java编写金额小写转大写
2014-09-28 16:11
295 查看
在银行系统中,经常可以看到金额小写转大写的模块,下面是在线闲来无事写的一个小程序,可以把金额从小写转大写,其实小写转大写需要注意一下几个地方:
连续几个零的处理,例如10000,100001,10010010
萬和亿的处理,例如三千两百万,五万亿
连续几个零的处理,例如10000,100001,10010010
萬和亿的处理,例如三千两百万,五万亿
import java.util.Scanner; public class ChangeMoney { private Scanner scanner = new Scanner(System.in); /** * 金额的最大值 */ public static final Long DIGT_VALUE_MAX = 9999999999999L; /** * 金额的最小值 */ public static final Long DIGT_VALUE_MIN = 0L; /** * 输入提示 */ public static final String SCANNER_TIP = "请输入一个整数的金额数值(" + DIGT_VALUE_MIN + "~" + DIGT_VALUE_MAX + "),退出请直接输入q,:"; /** * 输入错误提示 */ public static final String SCANNER_ERROR = "输入有误,请重新输入(退出请直接输入q):"; /** * 终止输入命令(不区分大小写) */ public static final String QUET_COMMONT = "q"; /** * 输入错误允许次数 */ public static final int ERROR_LIMIT = 3; /** * 钱的单位 */ public static final String[] MONEY_UNIT = { "", "拾", "佰", "仟", "萬", "亿" }; public static final String[] DIAT_UPER = {"零", "壹", "贰", "叁", "肆,", "伍", "陆", "柒", "捌", "玖" }; public static void main(String[] args) throws Exception { ChangeMoney money = new ChangeMoney(); Long m = money.getDigt(); System.out.println(money.getUpDigt(m) + "元整"); } /** * 输入整数金额(最多输入错误三次) * * * @return 输入的数值,-1表示终止输入 */ public long getDigt() { for (int i = 0; i < ERROR_LIMIT; i++) { System.out.println(SCANNER_TIP); String digt = scanner.nextLine(); // 终止输入 if (digt.equalsIgnoreCase(QUET_COMMONT)) { break; } try { Long digtLong = Long.parseLong(digt); // 有效值判断 if (digtLong >= DIGT_VALUE_MIN && digtLong <= DIGT_VALUE_MAX) { return digtLong; } } catch (Exception e) { } System.out.println(SCANNER_ERROR); } return -1; } public String getUpDigt(Long digt) { String returnNumber = ""; String digtStr = digt + ""; boolean zeroFlag = false; for (int i = 0; i < digtStr.length(); i++) { int length = digtStr.length() - i; // 0的判断 if (digtStr.charAt(i) == '0') { if (length == 5) { returnNumber += MONEY_UNIT[4]; zeroFlag = false; } else if (length == 9) { returnNumber += MONEY_UNIT[5]; zeroFlag = false; } else { zeroFlag = true; } continue; } if (zeroFlag) { returnNumber += DIAT_UPER[0]; } // 输数字 returnNumber += DIAT_UPER[Integer.parseInt(digtStr.charAt(i) + "")]; // 输单位 if (length < 5) { returnNumber += MONEY_UNIT[length - 1]; }else if(length < 9){ returnNumber += MONEY_UNIT[length - 5]; }else{ returnNumber += MONEY_UNIT[length - 9]; } if (length == 5) { returnNumber += MONEY_UNIT[4]; } else if (length == 9) { returnNumber += MONEY_UNIT[5]; } } return returnNumber; } }
相关文章推荐
- java实现小写金额转换大写金额
- java将小写金额转换为大写的工具类
- java编写输出一个字符串中大写英文字母数、小写英文字母数以及非英文字母数
- Java将小写金额转换成大写
- Java将小写金额转换成大写
- 【Java】编写一个程序,输出一个字符串中的大写英文字母数,小写英文字母数以及非英文字母数
- java转换小写金额为大写金额
- Java编写的金额转中文大写
- java 小写金额转大写金额
- 小写金额转换成大写金额(JAVA实现)
- java程序,编写一个程序,输出一个字符串中的大写英文字母数,小写英文字母数及非英文字母数
- Java小写金额转换大写与金额比对(支持繁体大写金额)
- java 小写金额转大写小算法
- Java工具包:小写金额转换成大写金额
- JAVA大写金额转小写金额过程
- Java 将小写金额转换成大写金额
- java编写输出一个字符串中大写英文字母数、小写英文字母数以及非英文字母数
- 用java将小写的金额转换为大写的金额
- java将小写金额转换为大写的工具类
- 利用创建型工厂方法模式编写小写数字金额转换为人民币大写C#代码。