A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 楞个里格朗 中级黑马   /  2013-11-11 18:38  /  1035 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*第10题:金额转换,阿拉伯数字转换成中国传统形式。
例如:101000001010   转换为   壹仟零壹拾亿零壹仟零壹拾圆整*/
//思路:此题考察的是查表法找出对应的值,
//需要制作数值表,单位表,但是当遇到0的时候就不需要附带单位。
class Test10{
public static String main(String[] args)
{

String mainMethod(String s);//在这里报错。一直弄不懂错在哪里
{
    //定义单位数组和为0是的情况
    String[]units={"亿","万","圆整"};
    String result="";
    //在字符串前面补零,使字符串长度为4的倍数
    int length=s.length()%4;
    if(length==1){
            s="000"+s;
    }else if(length==2){
            s="00"+s;
    }else if(length==3){
            s="0"+s;
    }
    //转成数组
    char[]ch=s.toCharArray();
    //获得数组长度除以4的结果,从而决定有几个子数组和几次循环
    int mod=ch.length/4;
    for(int i=0, i_units=3-mod;i<mod;i++,i_units++){
            char[]ch2=Arrays.copyOfRange(ch, i*4, (i*4)+4);//从左往右每次取4位组成新数组
            //如果一个子数组返回结果为零,那么后面不加单位
            if(read(ch2).equals("零")){//此处不能用“==”
                    result=result+read(ch2);
            }else if(i==0&&read(ch2).startsWith("零")){//最前面的结果不能有零
                    result=result+read(ch2).substring(1)+units[i_units];                                
            }else{//正常的结果
                    result=result+read(ch2)+units[i_units];
            }
    }
    return result;
}}
private static String read(char[]ch){
   
    String[]num={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾"};
    String [] units={"仟","佰","拾",""};
    String ss="";
    //遍历
    for(int i=0;i<4;i++){
            String s=ch[i]+"";
            //将数组内字节转换成数字
            int i_num=Integer.parseInt(s);
            //结合条件使用查表法获取结果
            if((i_num==0&&i==3)||(i_num==0&&i==0)){
                    ss=ss;
            }else if(i_num==0||i==3){
                    ss=ss+num[i_num];                                
            }else {
                     ss=ss+num[i_num]+units[i];               
            }
    }
    //使用正则,对多余的零去掉
    ss=ss.replaceAll("(.)\\1+","$$$$$$$$1");
    return ss;
}
}

1 个回复

倒序浏览
你把方法定义在主函数里了。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马