/*金额转换,阿拉伯数字转换成中国传统形式。例如:101000001010 转换为壹仟零壹拾亿零壹仟零壹拾圆整 * 耗时: * 状态: * 思路分析: * 1.首先获取他的长度 * 2.获取他的单位 * 3.凡是出现两个相零出现多个零的全部用一个零去代替 * 必须在转变为大写之前添加单位进去. * 这个题,挺难的. * */ public class Demo05 { public static void main(String[] args) { String[] str1 = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" }; //Map<Long, String> map = new TreeMap<Long, String>(); String[] arr2 = { "", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千" };// 这个只能做为值 //map.put(1L, ""); long k = 1; /*for (int i = 1; i < 12; i++) { k *= 10; map.put(k, arr2[i]); }*/ String str2 = "1253"; String str = ""; char[] arr = str2.toCharArray(); for (int i = 0; i < arr.length; i++) {// arr[i]='1' Integer in = Integer.parseInt(arr[i] + ""); str += str1[in]; } // System.out.println(str); // 从后面往前查入单位 "" String str3 = ""; int x = 0; for (int i = str.length() - 1; i >= 0; i--) { str3 += arr2[x] + str.charAt(i); x++; } // 开始反转 str = ""; for (int i = str3.length() - 1; i >= 0; i--) { str += str3.charAt(i); } /* * 首先判断相邻的的i-1和 i+1是不是为零, 如果是去就掉i-1 i i+1和i+2 其次遇到零就去掉后面的单位, * 方式二,遇到零就去掉后面的单位 再次判断,如果是多个零的情况就把多个零替换为一个零. */ str3 = ""; String regex = "亿万"; for (int i = 0; i < str.length() - 1; i++) { if (str.charAt(i) == '零' && !regex.contains(str.charAt(i + 1) + "")) { str3 += str.charAt(i); i++; continue; } else { str3 += str.charAt(i); } } str3 += str.charAt(str.length() - 1); /* * 开始去零 用正则去零 */ str = "零+"; str3 = str3.replaceAll(str, "零"); /* * 最后去掉万和亿前面的零 */ str = ""; if (str3.contains("万") && str3.contains("亿")) { int b = str3.indexOf("万"); if (str3.charAt(b - 1) == '零') { str = str3.substring(0, b - 1) + str3.substring(b); int c = str.indexOf("亿"); if (str.charAt(c - 1) == '零') { str = str.substring(0, c - 1) + str.substring(c); int z = str.indexOf("万"); if (str.charAt(z - 1) == '亿' && z - 1 != str.length() - 1) {// 如果万和亿挨着一起的情况下 str = str.substring(0, z) + str.substring(z + 1); if (str.charAt(str.length() - 1) == '零') { str = str.substring(0, str.length() - 1); System.out.println("dddddddddddddd"); System.out.println(str + "圆整");// 通过 } else {// 如果最后一位不是零 System.out.println("eeeeeeeeeeeeeeeeeeeeeee"); System.out.println(str + "圆整");// 通过 } } else {// 如果亿和万不是挨着一起的 if (str.charAt(str.length() - 1) == '零') { str = str.substring(0, str.length() - 1); System.out.println("kkkkkkkkkkkkkkkkk");//一千亿零一百万零一百圆整 str=str.replaceAll("零", ""); System.out.println(str + "圆整");// 通过 } else {// 如果最后一位不是零 System.out.println("mmmmmmmmmmmmmmmmmmmmmmm"); System.out.println(str + "圆整");// 通过 } } } else {// 如果亿前面不等于零 int z = str.indexOf("万"); if (str.charAt(z - 1) == '亿' && z - 1 != str.length() - 1) {// 如果万和亿挨着一起的情况下 str = str.substring(0, z) + str.substring(z + 1); if (str.charAt(str.length() - 1) == '零') { str = str.substring(0, str.length() - 1); System.out.println("gggggggggggggggggggggg"); System.out.println(str + "圆整");// 通过 } else {// 如果最后一位不是零 System.out.println("hhhhhhhhhhhhhhhhhhhhhhhhhhh"); System.out.println(str + "圆整");// 通过 } } else {// 如果亿和万不是挨着一起的 System.out.println("jjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"); System.out.println(str + "圆整");// 通过 } } } else {// 如果万前面不等于零 str = str3.substring(0, b - 1) + str3.substring(b); int c = str.indexOf("亿"); if (str.charAt(c - 1) == '零') { str = str.substring(0, c - 1) + str.substring(c); int z = str.indexOf("万"); if (str.charAt(z - 1) == '亿' && z - 1 != str.length() - 1) {// 如果万前面是亿,并且万不是最后一个 str = str.substring(0, z) + str.substring(z + 1); if (str.charAt(str.length() - 1) == '零') {// 如果最后一位等于零 str = str.substring(0, str.length() - 1); System.out.println(str + "圆整");// 通过 } else {// 如果最后一位不是零 System.out.println("11111111111111111111"); System.out.println(str + "圆整");// 通过 } } else {// 如果亿和万不是挨着一起的 万是是最后一个和万不是最后一个,两种情况 if (str.charAt(str.length() - 1) == '零') {// 如果最后一位等于零 str = str.substring(0, str.length() - 1); str=str.replaceAll("零", ""); if(str.indexOf("万")-1==str.indexOf("亿")){ str=str.substring(0,str.indexOf("万"))+str.substring(str.indexOf("万")+1); System.out.println("nnnnnnnnnnnnnn");////一百亿零万一千一百圆整 System.out.println(str + "圆整");// 通过 }else{ System.out.println("qqqqqqqqqqqq"); System.out.println(str + "圆整");// 通过 } } else {// 如果最后一位不是零 System.out.println("222222222222222222"); System.out.println(str + "圆整");// 通过 } } } else {// 如果亿前面不等于零 这个位置要判断是不是最后一位等于零的情况 int z = str.indexOf("万"); if (str.charAt(z - 1) == '亿' && z - 1 != str.length() - 1) {// 如果万前面是亿,并且万不是最后一个 str = str.substring(0, z) + str.substring(z + 1); if (str.charAt(str.length() - 1) == '零') {// 如果最后一位等于零 str = str.substring(0, str.length() - 1); System.out.println(str + "圆整");// 通过 } else {// 如果最后一位不是零 System.out.println("3333333"); System.out.println(str + "圆整");// 通过 } } else {// 如果亿和万不是挨着一起的 万是是最后一个和万不是最后一个,两种情况 if (str.charAt(str.length() - 1) == '零') {// 如果最后一位等于零 str = str.substring(0, str.length() - 1); System.out.println("55555555555555555555"); System.out.println(str + "圆整");// 通过 } else {// 如果最后一位不是零 System.out.println("444444444444444444"); System.out.println(str + "圆整");// 通过 } } } } } else if (str3.contains("万") && !str3.contains("亿")) {// 如果包含万,不包含亿 int b = str3.indexOf("万"); if (str3.charAt(b - 1) == '零') {// 如果万前面是零 str = str3.substring(0, b - 1) + str3.substring(b); if (str.charAt(str.length() - 1) == '零') {// 如果最后一个数等于零 str = str.substring(0, str.length() - 1); System.out.println("aaaaaaaaaaaaaaaa"); System.out.println(str + "圆整");// 通过 } else { System.out.println("666666666666666666666666"); System.out.println(str + "圆整");// 通过 } } else {// 这里要做判断,是不是最后一位等于零 这里到了1万 /* * if (str3.charAt(str3.length() - 1) == '零') { str3 = * str3.substring(0, str3.length() - 1); } * System.out.println("7777777777777777777777777"); * System.out.println(str3+"圆整");//通过 } * * * System.out.println("8888888888888888888888"); * System.out.println(str+"圆整");//通过 */if (str3.charAt(str3.length() - 1) == '零') {// 如果最后一个数等于零 str = str3.substring(0, str3.length() - 1); System.out.println("bbbbbbbbb"); System.out.println(str + "圆整");// 通过 } else { System.out.println("cccccccccccccccccc");//------------------------------ System.out.println(str3 + "圆整");// 通过 } } } else if (str3.contains("亿") && !str3.contains("万")) { int b = str3.indexOf("亿"); if (str3.charAt(b - 1) == '零') { str = str3.substring(0, b - 1) + str3.substring(b); } if (str.charAt(str.length() - 1) == '零') { str = str.substring(0, str.length() - 1); } System.out.println("999999999999999999999999"); System.out.println(str + "圆整");// 通过 } else { System.out.println("1010101010"); if (str3.charAt(str3.length() - 1) == '零') { str3 = str3.substring(0, str3.length() - 1); } System.out.println(str3 + "圆整");// 通过 } // System.out.println(str); } } |