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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小田 中级黑马   /  2015-5-1 23:22  /  2853 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
package lianxi1;

/**
定义一个常用的工具函数:需将一个浮点数转换成人民币读法字符串。
思路:1、现将这个浮点数转换为整数部分和小数部分并存入字符串数组中。
        2、分别对整数和小数部分进行转换。
        3、将转换后的两部分字符串连接在一起。
@author 小田
@version 1.0
*/
class  Rmb
{
        boolean bl=false;
        private String [] p={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
        private String [] p1={"拾","佰","仟"};
        /**
         * 把一个浮点数分成整数部分和小数部分
         * @param x 需要分解的浮点数
         * @return 分解出来的整数部分和小数部分,字符串数组的第一个元素是整数不封,第二个元素是小数部分
         * */
        private  String [] stringArray(double x)
        {
                long zheng=(long)x;
                long xiao=Math.round((x-zheng)*100);
                return new String []{zheng+"",String.valueOf(xiao)};
        }
        /**
         * 将一个浮点数转换成人民币读法字符串
         * @param x 需要转换的浮点数
         * @return 转换后的人民币读法字符串
         * */
        public  String zhuanHuan(double x)
        {
                return bianHuan(x);
        }
        private String bianHuan(double x)
        {
                String [] m=stringArray(x);
                String zheng1=m[0];
                String xiao1=m[1];
                String rmbzheng=zhengZhuan(zheng1);
                String rmbxiao=xiaoZhuan(xiao1);
                return rmbzheng+rmbxiao;
        }
        /**
         * 将小数部转化为人民币读法字符串
         * @param xiao1 需要转化的小数部分
         * @return 转换后的人民币读法字符串
         * */
        private String xiaoZhuan(String xiao1)
        {
                String n;
                if (xiao1.length()>1)
                {
                        if(xiao1.charAt(0)-48==0)
                        {
                                if (xiao1.charAt(1)-48==0)
                                {
                                        n="零角零分";
                                }
                                else
                                {
                                        n=p[xiao1.charAt(1)-48]+"分";
                                }
                        }
                        else
                        {
                                if (xiao1.charAt(1)-48==0)
                                {
                                        n=p[xiao1.charAt(0)-48]+"角";
                                }
                                else
                                {
                                        n=p[xiao1.charAt(0)-48]+"角"+p[xiao1.charAt(1)-48]+"分";
                                }
                        }
                }
                else
                        n=p[xiao1.charAt(0)-48]+"分";
                if(bl)
                {
                        n= "";
                }
                return n;
        }
        private String firstPanDuan(String str)
        {
                String result="";
                result+=p[str.charAt(0)-48]+p1[str.length()-2];
                for (int x=1 ;x<str.length() ;x++ )
                {
                        int num1=str.charAt(x)-48;
                        if (num1!=0&&x!=str.length()-1)
                        {
                                result+=p[num1]+p1[str.length()-2-x];
                        }
                        else
                        {
                                if (x>=2)
                                {
                                        if (str.charAt(x-1)-48==0 && str.charAt(x)-48==0)
                                                continue;
                                }
                                else
                                {
                                        if (str.charAt(str.length()-1)-48==0)
                                        continue;
                                }
                        }
                }
                return result;
        }
        private String lastPanDuan(String str2)
        {
                String result="";
                if(str2.charAt(0)-48!=0)
                        result+=p[str2.charAt(0)-48]+p1[str2.length()-2];
                for (int x=1 ;x<str2.length() ;x++ )
                {
                        int num3=str2.charAt(x)-48;
                        if (num3!=0&&x!=str2.length()-1)
                        {
                                result+=p[num3]+p1[str2.length()-2-x];
                        }
                        else
                        {
                                if (x>=2)
                                {
                                        if (str2.charAt(x-1)-48==0&&str2.charAt(x)-48==0)
                                                continue;
                                }
                                else
                                {
                                        if (str2.charAt(str2.length()-1)-48==0)
                                        continue;
                                }
                                result+=p[num3];
                        }
                }
                return result;
        }
        /**
         * 将整数部分转换为人民币读法的字符串
         * @param zheng1 需要转换的整数部分
         * @return 转换后的整数部分人民币读法字符串。
         * */
        private String zhengZhuan(String zheng1)
        {
                if (zheng1.length()>=13)
                {
                        System.out.println("需要转换的浮点数太大,请输入13位以内的浮点数");
                        bl=true;
                }
                String result="";
                if (zheng1.length()>8&&zheng1.length()<13)
                {
                        String str=zheng1.substring(0,zheng1.length()-8);
                        result=firstPanDuan(str);
                        result+="亿";
                        String str1=zheng1.substring(zheng1.length()-8,zheng1.length()-4);
                        if(str1.charAt(0)-48!=0)
                                result+=p[str1.charAt(0)-48]+p1[str1.length()-2];
                        for (int x=1 ;x<str1.length() ;x++ )
                        {
                                int num2=str1.charAt(x)-48;
                               
                                if (num2!=0&&x!=str1.length()-1)
                                {
                                        result+=p[num2]+p1[str1.length()-2-x];
                                }
                                else
                                {
                                        if (x>=2)
                                        {
                                                if (str1.charAt(x-1)-48==0&&str1.charAt(x)-48==0)
                                                        continue;
                                        }
                                        else
                                        {
                                                if (str1.charAt(str1.length()-1)-48==0)
                                                continue;
                                        }
                                        result+=p[num2];
                                }
                        }
                        if(str1.charAt(0)-48!=0||str1.charAt(1)-48!=0||str1.charAt(2)-48!=0||str1.charAt(3)-48!=0)
                                result+="万";
                        String str2=zheng1.substring(zheng1.length()-4,zheng1.length());
                        result+=lastPanDuan(str2);
                        result+="元";
                }
                else if (zheng1.length()>4&&zheng1.length()<9)
                {
                        String str1=zheng1.substring(0,zheng1.length()-4);
                        result=firstPanDuan(str1);
                        result+="万";
                        String str2=zheng1.substring(zheng1.length()-4,zheng1.length());
                        result+=lastPanDuan(str2);
                        result+="元";
                }
                else if (zheng1.length()>0&&zheng1.length()<5)
                {
                        String str2=zheng1.substring(0,zheng1.length());
                        result=firstPanDuan(str2);
                        result+="元";
                }
                return result;
        }
        public static void main (String [] args)
        {
                Rmb rb=new Rmb();
                System.out.println(rb.zhuanHuan(100000000000.12));
        }
}
我用eclipse能运转,用dos能编译,但是运行时报 找不到或无法加载主类 Rmb,在dos里编译和运行其它程序可以(见附图)

T)M9(}G6KML~Z7~O3KF4]$U.jpg (101.26 KB, 下载次数: 7)

如图,其它文件都可以运行,为什么Rmb不行

如图,其它文件都可以运行,为什么Rmb不行

最佳答案

查看完整内容

是你的包的问题,我放我这边改成了test,可以运行,你运行时有没有加包名???

4 个回复

倒序浏览
是你的包的问题,我放我这边改成了test,可以运行,你运行时有没有加包名???
回复 使用道具 举报
package lianxi1;
回复 使用道具 举报
小田 来自手机 中级黑马 2015-5-2 15:48:08
板凳
我把源文件放了e盘,然后重新编译了的
回复 使用道具 举报
wzb1991 发表于 2015-5-2 20:39
是你的包的问题,我放我这边改成了test,可以运行,你运行时有没有加包名???
...

运行导入包的文件是java 包名.文件名
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马