package d; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; /** * @author 郑云飞 */ public class TestRMB { private static BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); private static String rmbString=""; private static String rmb=""; public static void main(String[] args) throws IOException { char ch; int index=0,k=0; char c; System.out.println("请输入你要转换的人民币数:"); rmb=br.readLine(); boolean flag=true; /*****************处理全0和开头许多0的情况****************/ while(flag) { c=rmb.charAt(k); if(c!='0') { flag=false; } else { flag=true; } k++; if(k==rmb.length()) { break; } } /*****************处理全0和开头许多0的情况 END****************/ /*****************如果都是0的情况****************************/ if(flag==true) { System.out.println("零元"); System.exit(0); } /*****************如果不是0的情况****************************/ else {while((ch=rmb.charAt(index))!=-1) { rmbString+=turnRmb(ch, index);//显示大写字母 //判断o出现的位置 if(turnRmb(ch,index)!='零') { rmbString+=addunit(index);//显示单位 } index++; if(index==rmb.length()) { break; } } rmbString=rmbString.replaceAll("零零", "零"); rmbString=rmbString.replaceAll("零零零", "零"); rmbString=rmbString.replaceAll("零零", "零"); /******************处理多余的万字*************************/ int count=0; int []a=new int[8]; for(int i=0;i<rmbString.length();i++) { if(rmbString.charAt(i)=='万') { a[count]=i; count++; } } StringBuffer stringBuffer=new StringBuffer(rmbString); for(int i=0;i<count-1;i++) { stringBuffer.deleteCharAt(a[i]); stringBuffer.insert(0, '零'); } if(stringBuffer.charAt(stringBuffer.length()-1)=='零') { stringBuffer.deleteCharAt(stringBuffer.length()-1); } /******************处理多余的万字 END*************************/ /******************处理多余零*************************/ boolean boo=true; while(boo) { int m=0; if(stringBuffer.charAt(m)=='零') { stringBuffer.deleteCharAt(m); } else { boo=false; } m++; } /******************处理多余的亿字*************************/ int []b= new int[8]; int con=0; for(int i=0;i<stringBuffer.length();i++) { if(stringBuffer.charAt(i)=='亿') { b[con]=i; con++; } } StringBuffer stringBuffer1=new StringBuffer(stringBuffer); for(int i=0;i<con-1;i++) { stringBuffer1.deleteCharAt(b[i]); } /******************处理多余的亿字 END*************************/ /******************打印最终结果*************************/ System.out.println("--------打印最终的结果---------"); if(rmb.equals("0")) { stringBuffer1=new StringBuffer("零"); } if(stringBuffer1.charAt(0)=='零') { stringBuffer1.deleteCharAt(0); } System.out.println(stringBuffer1+"元"); } } /*************************添加单位*********************/ private static String addunit(int index) { String ch=" "; switch(rmb.length()-1-index) { case 0:ch=""; break; case 1:ch="十"; break; case 2:ch="百"; break; case 3:ch="千"; break; case 4:ch="万"; break; case 5:ch="十万"; break; case 6:ch="百万"; break; case 7:ch="千万"; break; case 8:ch="亿"; break; case 9:ch="十亿"; break; case 10:ch="百亿"; break; case 11:ch="千亿"; break; case 12:ch="兆"; break; default:System.out.println("目前暂支持12位数字的转换");System.exit(0); } return ch; } /*************************大小写字母转换*********************/ public static char turnRmb(char ch,int index) { switch(ch) { case '0':ch='零';break; case '1':ch='壹';break; case '2':ch='贰';break; case '3':ch='叁';break; case '4':ch='肆';break; case '5':ch='伍';break; case '6':ch='陆';break; case '7':ch='柒';break; case '8':ch='捌';break; case '9':ch='玖';break; default:System.out.println("类型输入有误");System.exit(0); } return ch; } }
import java.io.*; class RMB { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] unit = {"圆", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万"}; String[] zero = {"万", "亿"}; System.out.println("请输入您要转换的数字:"); String rmb = br.readLine(); int num = Integer.parseInt(rmb); String res = ""; while(rmb.charAt(0) == '0') { rmb = rmb.substring(1); if(rmb.length() == 0) { res = "零圆"; break; } } if(!res.equals("零圆")) { for(int i=rmb.length()-1;i>-1;i--) { char ch = rmb.charAt(i); if(ch == '0') { if(i < rmb.length() - 1) { if(rmb.charAt(i + 1) != '0') { res = getString(ch) + res; } if((rmb.length() - 1 - i) % 4 == 0) { res = zero[(rmb.length() - 1 - i) / 4 - 1] + res; } } else { res = unit[rmb.length() - 1 - i] + res; } } else { res = getString(ch) + unit[rmb.length() - 1 - i] + res; } } } System.out.println(res); } catch(IOException e) { e.printStackTrace(); } catch(NumberFormatException e) { System.out.println("数字格式错误!"); } } public static String getString(char ch) { switch(ch) { case '0': { return "零"; } case '1': { return "壹"; } case '2': { return "贰"; } case '3': { return "叁"; } case '4': { return "肆"; } case '5': { return "伍"; } case '6': { return "陆"; } case '7': { return "柒"; } case '8': { return "捌"; } case '9': { return "玖"; } default: { return ""; } } } }
import java.text.*; import java.util.Scanner; public class MoneyTest { public static String zhuanhuan(Object ob) { String s=new DecimalFormat("#.00").format(ob); s=s.replaceAll("\\.", "");//将字符串中的"."去掉 char d[]={ '零', '一', '两', '三', '四', '五', '六', '七', '八', '九'}; String unit="仟佰拾兆仟佰拾亿仟佰拾万仟佰拾元角分"; int c=unit.length(); StringBuffer sb=new StringBuffer(unit); for(int i=s.length()-1;i>=0;i--) { sb.insert(c-s.length()+i,d[s.charAt(i)-0x30]); } s=sb.substring(c-s.length(),c+s.length()); s=s.replaceAll("零[仟佰拾]", "零"). replaceAll("零{2,}", "零"). replaceAll("零([兆万元?])", "$1"). replaceAll("零[角分]", ""); return s; } public static void main(String[] args) { Scanner s=new Scanner(System.in); System.out.println("请输入你要转换的金额:?"); double number=s.nextDouble(); String s1=zhuanhuan(new Double(number)); System.out.println("转换成大写后的金额是:"+s1); } }