/*金额转换,阿拉伯数字转换成中国传统形式。例如: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);
}
} |