用java实现,如把100.1转换成一百零一元;1000转换成一千元,请大家指点

解决方案 »

  1.   

    为了表示诚意,我先给你小数的处理,先给我分,然后发我邮件[email protected]
    我给你。package scjp;public class GetDot {

    private final static String[] a_strNumber = { "零", "壹", "贰", "叁", "肆", "伍",
    "陆", "柒", "捌", "玖" };
    public static void main(String[] args) throws Exception { GetDot dot = new GetDot();
      String encoding = System.getProperty("file.encoding"); System.out.println("encoding======" + encoding);         String str="10.23";
            String getFraction=dot.getFraction(str);
     
                     System.out.println("========"+getFraction);

    } /*
     * 得到符号位,如果输入的是正数就返回" ",否则就返回负号
     */
    public String getSign(String pValue) { return pValue.indexOf("-") == 0 ? "负" : " ";
    } /*
     * 得到小数部分的汉字,如10.23,就输出贰叁
     */
    public String getFraction(String pValue) {
                     
    String strFraction = null; int intDotPos = pValue.indexOf(".");
    if (-1 == intDotPos)
    return "";
    strFraction = pValue.substring(intDotPos + 1);
                System.out.println("have it"+strFraction);
    StringBuilder sbResulet = new StringBuilder(strFraction.length());
                        
                    
    for (int i = 0; i < strFraction.length(); i++) {
       System.out.println("have it In"+strFraction); 
    sbResulet.append(a_strNumber[strFraction.charAt(i)-48]);
    }
    return sbResulet.toString();
    }
    /*
     * 
     */
    public String getInteger(){


    return null;
    }
    }
      

  2.   

    package scjp;public class GetDot { private final static String[] a_strNumber = { "零", "壹", "贰", "叁", "肆", "伍",
    "陆", "柒", "捌", "玖" }; private final static String[] a_strModify = { "", "拾", "佰", "仟", "万", "拾",
    "佰", "仟", "亿", "拾", "佰", "仟" }; public static void main(String[] args) throws Exception { GetDot dot = new GetDot(); String str = "-101.23";
    String getSign = dot.getSign(str);
    String getFraction = dot.getFraction(str);
    String getDot = dot.getDot(str);
    String getInteger = dot.getInteger(str);
    System.out.println("========" + getSign + getInteger + getDot
    + getFraction); } /*
     * 得到符号位,如果输入的是正数就返回" ",否则就返回负号
     */
    public String getSign(String pValue) { return pValue.indexOf("-") == 0 ? "负" : " ";
    } /*
     * 得到小数部分的汉字,如10.23,就输出贰叁
     */
    public String getFraction(String pValue) { String strFraction = null; int intDotPos = pValue.indexOf(".");
    if (-1 == intDotPos)
    return "";
    strFraction = pValue.substring(intDotPos + 1);
    System.out.println("have it" + strFraction);
    StringBuilder sbResulet = new StringBuilder(strFraction.length()); for (int i = 0; i < strFraction.length(); i++) {
    System.out.println("have it In" + strFraction); sbResulet.append(a_strNumber[strFraction.charAt(i) - 48]);
    }
    return sbResulet.toString();
    } /*
     * 得到整数部分的数据
     */
    public String getInteger(String pValue) { System.out.println("============");
    String strInteger = null; int intDotPos = pValue.indexOf("."); int intSignPos = pValue.indexOf("-"); if (intDotPos == -1) { intDotPos = pValue.length();
    } strInteger = pValue.substring(intSignPos + 1, intDotPos);
    /*
     * 反转strInteger
     */
    strInteger = new StringBuffer(strInteger).reverse().toString();
    System.out.println("StrInteger====" + strInteger);
    StringBuilder sbResult = new StringBuilder(); for (int i = 0; i < strInteger.length(); i++) {
    sbResult.append(a_strModify[i]);
    sbResult.append(a_strNumber[strInteger.charAt(i) - 48]);
    }
    /*
     * 在反转
     */ sbResult = sbResult.reverse();
    return sbResult.toString();
    } /*
     * 得到小数点
     */
    public String getDot(String pValue) { return pValue.indexOf(".") != -1 ? "点" : "";
    }
    }
      

  3.   

    john_sheep(彩虹勇士(结贴就那么难么?)) ( 五级(中级))真那么难么?
      

  4.   

    看看这篇文章:人民币小写金额转成大写算法 http://www.javaphp.com.cn/html/javadazahui/20070529/552.html
      

  5.   

    dengfangping() 
    这个朋友特有意思,赫赫
      

  6.   

    这个问题CSDN讨论过很多次,曾经有个大牛用正则写过,我只保留了其中整数部分的源码。
    具有很高的价值,不过记得好像还存在小问题。//要求从键盘输入一数字,然后中文输出(要符合中文语法)
    //例如输入12434则 输出 一万二千四百三十四//转换成中文表达形式
    class Translate{
            public void translate(String input) {
                    String[] num=new String[] {"零","一","二","三","四","五","六","七","八","九"};
                    String[] unit=new String[]{"","十","百","千","万","亿"};
                    String[] mid=new String[input.length()];
                    String output="";
                    
                    //转换数字
                    for (int i=0; i<input.length(); i++) {
                            mid[i]=num[Integer.parseInt(""+input.charAt(i))];
                            output+=mid[i];
                    }
                    
                    //加入单位
                    String str="";
                    String result="";
                    for (int i=0; i<output.length(); i++) {
                            if (output.length()-i-1==0) {
                                    str=""+output.charAt(i);
                            }
                            else if ((output.length()-i-1+4)%8==0) {
                                    str=output.charAt(i)+unit[4];
                            }
                            else if ((output.length()-i-1)%8==0) {
                                    str=output.charAt(i)+unit[5];
                            }
                            else {
                                    str=output.charAt(i)+unit[(output.length()-i-1)%4];
                            }
                            result+=str;
                    }                //格式化成中文习惯表达
                    result=result.replaceAll("零[千百十]", "零");
                    result=result.replaceAll("亿零+万", "亿零");
                    result=result.replaceAll("万零+亿", "万亿");
                    result=result.replaceAll("零+", "零");
                    result=result.replaceAll("零万", "万");
                    result=result.replaceAll("零亿", "亿");
                    result=result.replaceAll("^一十", "十");
                    result=result.replaceAll("零$", "");
                    System.out.println(result);
            }
            
            //测试
            public static void main(String[] args) {
                    Translate tr=new Translate();
                    tr.translate("1000");
                    tr.translate("10000");
                    tr.translate("1000000001");
                    tr.translate("1000000000001");
                    tr.translate("100100010");
            }
    }