数字转中文
package zxc.utils; import java.util.HashMap; import java.util.Map; public class RmbConversion { static StringBuffer buf; public static void main(String[] args) { System.out.println(insensitive(1000)); } /** *主方法(负责完成小写转大写)* */ public static StringBuffer insensitive(double totalMoney) { int count = 0; buf = new StringBuffer(); String[] digit = { "分", "角", "元", "拾", "佰", "仟", "万" }; int shang, mo = 0; int totalMoneys = (int) (totalMoney * 100); //int totalMoneys = 5523; /** *这个循环的大小其实可以根据digit数组的长度来控制** */ Integer integer = 10000000; for (int exponent = digit.length - 1; exponent >= 0; exponent--) { integer /= 10; shang = totalMoneys / integer; mo = totalMoneys % integer; if(count == 0){ count = getMarker(shang); //设置的标记数,用来判断'0'出现的情况(有效部分的'0',无效部分的'0') } setValue(shang, digit[exponent],count, mo); totalMoneys = mo; } return buf; } /***对传递过来的整数进行赋值***/ public static void setValue(int zheShu, String digit, int count, int mo) { if (zheShu > 0) { buf.append(getConstant(zheShu) + digit); } else if(zheShu == 0){ if(count > 0 && mo >0) { //有效'0' buf.append(getConstant(zheShu) + digit); }else{ //无效'0' buf.append("×" + digit); } } } /*对传递进来的数进行判断,如果大于0则加一*/ public static int getMarker(int number){ if(number > 0){ return 1; } return 0; } public static String getConstant(int constant) { Map<Integer, String> num = new HashMap<Integer, String>(); String[] number = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; for (int i = 0; i < 10; i++) { num.put(i, number[i]); } return num.get(constant).toString(); } }