import java.util.Scanner; import java.util.regex.Pattern; public class Demo { public static String result = ""; public static boolean a = true; public static boolean b = true; public static void main(String[] args) { String str = "100000"; str = "1005000"; str ="10010010"; str="1003"; str="110"; str ="10000"; str ="1000000"; str = "1000500"; str = "10100010"; str="1100010"; str="101010101"; str="1005005"; str="1000500"; str="10500500"; System.out.println("请输入一个数字:"); str = new Scanner(System.in).next(); // for (int i = 0; i < 999999999; i++) { // if(Pattern.matches("^[01]*$",""+i)){ step(str+""); if(b&&result.length()<=3&& result.indexOf("一十")==0){ System.out.println(result.indexOf("一十")+"^^"); result = result.replace("一十","十"); } result +="*****"; System.out.println(result); result=""; a=true; b=true; // } // } } public static void step(String str) { if (str.length() > 8) { addNumber(str.substring(0, 1)); result += "亿"; b = false; step(str.substring(1)); } else if (str.length() > 4) { addUnit1(str.substring(0, str.length() - 4)); b = false; step(str.substring(str.length() - 4)); } else if(str.length()>0){ addUnit2(str); } } public static void addNumber(String str) { int temp = Integer.parseInt(str); switch (temp) { case 0: if (a) { result += "零"; a = false; return; } a = false; return; case 1: result += "一"; break; case 2: result += "二"; break; case 3: result += "三"; break; case 4: result += "四"; break; case 5: result += "五"; break; case 6: result += "六"; break; case 7: result += "七"; break; case 8: result += "八"; break; case 9: result += "九"; break; default: break; } a = true; } public static void addUnit1(String str) { for (int i = 0; i < str.length(); i++) { if (isFourZero(str.substring(i))&&result.length()>0&&!result.substring(result.length()-1).equals("亿")) { result += "万"; result+="零"; a=false; return; } String ch = str.substring(i, i + 1); if (i == 0) { a = true; } addNumber(ch); addUnit(a, i, str.length()); } result += "万"; a = true; } public static void addUnit2(String str) { if (result.length()<=4&&result.length() >= 3 && result.indexOf("一十")==0) { result = result.replace("一十","十"); } if (isFourZero(str) && b == false) { if(result.substring(result.length()-1).equals("零")){ result = result.substring(0, result.length() - 1); } return; } for (int i = 0; i < str.length(); i++) { if (isFourZero(str.substring(i))) { return; } String ch = str.substring(i, i + 1); addNumber(ch); addUnit(a, i, str.length()); } } public static void addUnit(boolean n, int index, int length) { if (n == false) { return; } switch (index + (4 - length)) { case 0: result += "千"; break; case 1: result += "百"; break; case 2: result += "十"; break; case 3: result += ""; break; default: break; } } public static boolean isFourZero(String str) { int count = 0; for (int i = 0; i < str.length(); i++) { if (str.substring(i, i + 1).equals("0")) { count++; } } if (count == str.length()) { return true; } return false; } }