做出来即给分

解决方案 »

  1.   

    方法比较多,随便写个
      public static char todx(char c) {
        return "壹贰叁肆伍陆柒捌玖拾".toCharArray()["一二三四五六七八九十".indexOf(c)];
      }
      

  2.   

    public static String ConvertNumberToChinese(String money)
    {
    String[] Nums = new String[] {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        String S = ""; //返回值 
    String x=money.replaceAll(",","").replaceAll(" ","");
    if(x.startsWith("0")&&(!x.startsWith("0.")))
    x=x.replaceFirst("0","");
    int dot=-1;
    String intString,dotString;
    if (x.startsWith("0.")||x.startsWith("."))
    S="零圆"+ConvertDotNumberToChinese(x.substring(x.indexOf(".")+1,x.length()));
    else
    {
    dot=x.indexOf(".");
    if (dot>-1)
    {
    intString=x.substring(0,dot);
    dotString=x.substring(dot+1,x.length() );
    S=ConvertIntNumberToChinese(intString)+"圆"+ConvertDotNumberToChinese(dotString);
    }
    else
    {
    S=ConvertIntNumberToChinese(money)+"圆整";
    }
    }
    return S;
    } private static String ConvertDotNumberToChinese(String money)
    {
    String[] Nums = new String[] {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
    String S = ""; //返回值 
    String x=money.replaceAll(",","").replaceAll(" ","");
    int dot=-1;
    int i=0;
        if (money.length()==1)
            {
    //          System.out.println( money.substring(dot+1,1));
             S=S+ Nums[Integer.parseInt(money.substring(0,1))]+"角"+"零分";
            }
            if(money.length()>=2)
             S=S+ Nums[Integer.parseInt(money.substring(0,1))]+"角"+Nums[Integer.parseInt(money.substring(1,2))]+"分";     return S;
    }
    private static String ConvertIntNumberToChinese(String money)

    String[] Nums = new String[] {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; 
        //位 数组 
        String[] Digits = new String[] {"", "拾", "佰", "仟"}; 
        //单位 数组 
        String[] Units = new String[] {"", "[万]", "[亿]", "[万亿]"}; 
        String S = ""; //返回值 
    if (money==null) return "";
        String x=money.replaceAll(",","").replaceAll(" ","");
    if(money.length()<=0) return "";
        int p = 0; //字符位置指针 
        int m = x.length() % 4; //取模 
     
            // 四位一组得到组数 
            int k = (m > 0 ? x.length() / 4 + 1 : x.length() / 4); 
     
            // 外层循环在所有组中循环 
        // 从左到右 高位到低位 四位一组 逐组处理 
        // 每组最后加上一个单位: "[万亿]","[亿]","[万]" 
        for (int i = k; i > 0; i--) 
        { 
            int L = 4; 
            if (i == k && m != 0) 
            { 
                L = m; 
            } 
            // 得到一组四位数 最高位组有可能不足四位 
                String s = x.substring(p, p + L); 
                int l = s.length(); 
     
                // 内层循环在该组中的每一位数上循环 从左到右 高位到低位 
            for (int j = 0; j < l; j++) 
            { 
                //处理改组中的每一位数加上所在位: "仟","佰","拾",""(个) 
                int n = java.lang.Integer.parseInt(s.substring(j, j+1)); 
                if (n == 0) 
                { 
                    if ((j < l - 1) 
                        && (java.lang.Integer.parseInt(s.substring(j + 1, j + 1+ 1)) > 0) //后一位(右低) 
                        && !S.endsWith(Nums[n])) 
                    { 
                        S += Nums[n]; 
                    } 
                } 
                else 
                { 
                    //处理 1013 一千零"十三", 1113 一千一百"一十三" 
                    if (!(n == 1 && (S.endsWith(Nums[0]) | S.length() == 0) && j == l - 2)) 
                    { 
                        S += Nums[n]; 
                    } 
                    S +=  Digits[l - j - 1]; 
                } 
            } 
            p += L; 
            // 每组最后加上一个单位: [万],[亿] 等 
            if (i < k) //不是最高位的一组 
            { 
                if (java.lang.Integer.parseInt(s) != 0) 
                { 
                    //如果所有 4 位不全是 0 则加上单位 [万],[亿] 等 
                    S += Units[i - 1]; 
                } 
            } 
            else 
            { 
                //处理最高位的一组,最后必须加上单位 
                S += Units[i - 1]; 
            } 
        } 
        return S; 

      

  3.   

    太专业了。写出来也许能挣大钱,因为它有能力操纵印钞机,
    就是不要出现  new Money () 死循环,免得被淹死。
      

  4.   


    package numberChange;
    public class NumberChange {
    private String [] upperString ={"","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
    private String[]unitString={"","十","百","千","万","十","百","千","亿","十"};
    private int numberInt = 0;
    public void setN(String input){//String change to int
    int temp = Integer.parseInt(input);
    if(temp >=0&&temp<=2147483647 ){//正整数最大部分
    numberInt = temp;

    showN("阿拉伯数字为: ",input);
    }
    else
    System.out.println("超出范围");
    }
    public void changeN(){
    int temp = numberInt;
    int x =0, i=0;
    String result ="";
    boolean isZero = true,isWan=false;
    if(temp==0&&i==0){
    showN("大写数字","零");
    return;
    }
    do{
    x=temp%10;
    temp=temp/10;
    if(i==4&&isWan==true){
    if(numberInt>=100000&&numberInt<1000000000)
    result ="万"+result;
    else
    result ="亿"+result;
    }


    if(x!=0){
           result = upperString[x]+unitString[i]+result;
           if(i==0){
                    isZero = false;}
        
           }
    else if(x==0){
    if(isZero==false){
    result ="零"+result; isZero = true;isWan=true;}
    else 
    result = upperString[x]+result;

    }
    i++;

    }while(temp!=0);
    showN("大写数字",result);

    }
    public void showN(String a,String b){
    System.out.println(a+"  "+b);
    } public static void main(String[] args) {
    NumberChange nC = new NumberChange();
    nC.setN("1231");
    nC.changeN();


    }
    }
      

  5.   

    你好:
        我建了个QQ高级群:2869593,里面专门讨论JAVA,希望你能加入!
         谢谢啊!
                    真诚希望你的加盟!非常感谢!
                    让我们一起交流编程技术!
                         我替广大热爱编程爱好者感谢你了!
      

  6.   

    public static char todx(char c) {
        return "壹贰叁肆伍陆柒捌玖拾".toCharArray()["一二三四五六七八九十".indexOf(c)];
      }这个很牛。学习
      

  7.   

    package web.com;
    /**
     *
     * <p>Title: 人民币转成大写</p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2004</p>
     * <p>Company: www.fqf.com.cn</p>
     * @author 范庆丰
     * @version 1.0
     */
    public class changeToBig {
       public changeToBig() {
       }
       public String  hangeToBig(double value){
        char[] hunit={'拾','佰','仟'};                                               //段内位置表示
        char[] vunit={'万','亿'};                                                     //段名表示
        char[] digit={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};  //数字表示
        long midVal = (long)(value*100);                                      //转化成整形
        String valStr=String.valueOf(midVal);                                //转化成字符串    String head=valStr.substring(0,valStr.length()-2);               //取整数部分
        String rail=valStr.substring(valStr.length()-2);                     //取小数部分    String prefix="";                                                                 //整数部分转化的结果
        String suffix="";                                                                  //小数部分转化的结果
        //处理小数点后面的数
        if(rail.equals("00")){                                                            //如果小数部分为0
          suffix="整";
        } else{
          suffix=digit[rail.charAt(0)-'0']+"角"+digit[rail.charAt(1)-'0']+"分";        //否则把角分转化出来
        }
        //处理小数点前面的数
        char[] chDig=head.toCharArray();                                                         //把整数部分转化成字符数组
        char zero='0';                                                                                          //标志'0'表示出现过0
        byte zeroSerNum = 0;                                                                            //连续出现0的次数
        for(int i=0;i<chDig.length;i++){                                                               //循环处理每个数字
          int idx=(chDig.length-i-1)%4;                                                                //取段内位置
          int vidx=(chDig.length-i-1)/4;                                                                //取段位置
          if(chDig[i]=='0'){                                                                                  //如果当前字符是0
            zeroSerNum++;                                                                                 //连续0次数递增
            if(zero == '0'){                                                                                    //标志
              zero=digit[0];
            } else if(idx==0 && vidx >0 &&zeroSerNum < 4){
              prefix += vunit[vidx-1];
              zero='0';
            }
            continue;
          }
          zeroSerNum = 0;                                                                                    //连续0次数清零
          if(zero != '0') {                                                                                        //如果标志不为0,则加上,例如万,亿什么的
            prefix+=zero;
            zero='0';
          }
          prefix+=digit[chDig[i]-'0'];                                                                        //转化该数字表示
          if(idx > 0) prefix += hunit[idx-1];
          if(idx==0 && vidx>0){
            prefix+=vunit[vidx-1];                                                                             //段结束位置应该加上段名如万,亿
          }
        }    if(prefix.length() > 0) prefix += '圆';                                                             //如果整数部分存在,则有圆的字样
        return prefix+suffix;                                                                                     //返回正确表示
      }
    public static void main(String args[]){
       changeToBig a=new changeToBig();
       System.out.print(a.hangeToBig(12));
    }
    }
      

  8.   

    关于一楼的"壹贰叁肆伍陆柒捌玖拾".toCharArray()["一二三四五六七八九十".indexOf(c)],如果c不在“一二三四五六七八九十”中时,"一二三四五六七八九十".indexOf(c)会返回-1,从而会出java.lang.ArrayIndexOutOfBoundsException。
    以下是我的函数
        /**
         * 文字列变换用
         * @param str    要变换的文字列
         * @param srcStr    源文字列
         * @param destStr 目的文字列
         * @return    变换后的文字列
         */
        public static String strChange(String str, String srcStr, String destStr) 
        {
            if (str == null) 
            {
                return null;
            }
            str = str.trim();
            if (str.length() == 0)
            {
                return str;
            }
            StringBuffer result = new StringBuffer();
            String one = null;
            int index;
            for (int i = 0; i < str.length(); i++) 
            {
                one = str.substring(i, i + 1);
                index = srcStr.indexOf(one);
                if (index >= 0) 
                {
                    one = destStr.substring(index, index + 1);
                }
                result.append(one);
            }
            return result.toString();
        }调用方法 strChange("要变换的文字列", "一二三四五六七八九十", "壹贰叁肆伍陆柒捌玖拾"); 
      

  9.   

    happyerskyfujh(海贝尔)  的方法才厉害!
    一楼只不过是提供一些思路,不完善!
      

  10.   

    最近写个javabean了    要不10个,分别转换   很好做的拉