• JAVA学习日报 10/14


    今天时10月14号,星期三

    特别尝试了一下四则运算中分数和小数的计算……先说结论——果然不行啊,字符串读入读小数会报一个叫NullPointerException的奇妙异常

    解决了好一阵也没能彻底解决……啊,放弃!

    欸……话说下次的四则运算会不会就是小数了啊……

    另外虽然是失败作品……不过也把代码贴上来吧

    public static String getzongde(String str){
                String kuohao=getkuohao(str);
                String chengchu=getchengchu(kuohao);
                String jiajian=getjiajian(chengchu);
                return jiajian;
            }
            public static String getkuohao(String str){
                String newstr=str;
                if(newstr.contains("(")){
                    int a=str.lastIndexOf("(");
                    String str1=str.substring(a,str.length());
                    int b =str1.indexOf(")");
                    String str2=str1.substring(1,b);
                    String chengchu=getchengchu(str2);
                    String jiajian=getjiajian(chengchu);
                    StringBuffer s=new StringBuffer(str);
                    newstr=s.replace(a, a+b+1, jiajian).toString();
                    return getkuohao(newstr);
                    
                }
                return newstr;
            }
            public static String getchengchu(String str){
                String newstr=str;
                if(str.contains("*")||str.contains("/")){
                    String str2[]=str.split("[*/+-]");//
                    String str3=str.replaceAll("\\d+","").replaceAll("\\.","");
                    int a=0,b=0,c=0,star=0;
                    if(str3.contains("*")&&str3.contains("/")){
                        a=str3.indexOf("*");
                        b=str3.indexOf("/");
                        if(a>b){
                            c=b;    
                            star=str.indexOf("/");
                        }else{
                            c=a;
                            star=str.indexOf("*");
                        }
                    }else if(str3.contains("*")){
                        c=str3.indexOf("*");
                        star=str.indexOf("*");
                    }else{
                        c=str3.indexOf("/");
                        star=str.indexOf("/");
                    }
                    String num=getsuanshi(str2[c]+str3.charAt(c)+str2[c+1]);
                    StringBuffer s=new StringBuffer(str);
                    int kaishi=star-str2[c].length(),jieshu=star+str2[c+1].length()+1;
                    StringBuffer strs=s.replace(kaishi,jieshu ,num);
                    newstr=strs.toString();
                    return getchengchu(newstr);
                }
                return newstr;
            }
            public static String getjiajian(String str){
                String newstr=str;
                if(str.contains("+")||str.contains("-")){
                    String str2[]=str.split("[*/+-]");
                    String str3=str.replaceAll("\\d+","").replaceAll("\\.","");
                    int a=0,b=0,c=0,star=0;
                    if(str3.contains("+")&&str3.contains("-")){
                        a=str3.indexOf("+");
                        b=str3.indexOf("-");
                        if(a>b){
                            c=b;    
                            star=str.indexOf("-");
                        }else{
                            c=a;
                            star=str.indexOf("+");
                        }
                    }else if(str3.contains("+")){
                        c=str3.indexOf("+");
                        star=str.indexOf("+");
                    }else{
                        c=str3.indexOf("-");
                        star=str.indexOf("-");
                    }
                    String num=getsuanshi(str2[c]+str3.charAt(c)+str2[c+1]);
                    StringBuffer s=new StringBuffer(str);
                    int kaishi=star-str2[c].length(),jieshu=star+str2[c+1].length()+1;
                    StringBuffer strs=s.replace(kaishi,jieshu ,num);
                    newstr=strs.toString();
                    return getjiajian(newstr);
                }
                return newstr;
            }
            public static String getsuanshi(String str){
                double c=0.0;
                String str2[];
                if(str.contains("+")){
                    str2=str.split("[+]");
                    c=getjia(Double.parseDouble(str2[0]),Double.parseDouble(str2[1]));
                }else if(str.contains("-")){
                    str2=str.split("[-]");
                    c=getjian(Double.parseDouble(str2[0]),Double.parseDouble(str2[1]));
                }else if(str.contains("*")){
                    str2=str.split("[*]");
                    c=getcheng(Double.parseDouble(str2[0]),Double.parseDouble(str2[1]));
                }else if(str.contains("/")){
                    str2=str.split("[/]");
                    c=getchu(Double.parseDouble(str2[0]),Double.parseDouble(str2[1]));
                }
                NumberFormat format=NumberFormat.getInstance();
                format.setMaximumFractionDigits(30);
                format.setMinimumFractionDigits(0);
                format.setGroupingUsed(false);
                return format.format(c);
            }
            public static Double getjia(double a,double b){
                double c=a+b;
                return c;
            }
            public static Double getjian(double a,double b){
                double c=a-b;
                return c;
            }
            public static Double getcheng(double a,double b){
                double c=a*b;
                return c;
            }
            public static Double getchu(double a,double b){
                double c=a/b;
                return c;
            }

    好,今天就是这样啦

     

     

  • 相关阅读:
    Android Studio运行Hello World程序
    WPF,回车即是tab
    phpmyadmin上在某数据库里创建函数
    thinkphp项目部署在phpstudy里的nginx上
    《原创视频》牛腩学docker简记
    visual studio添加docker支持简记
    edge 浏览器中数字显示为链接
    JSON.net 在实体类中自定义日期的格式
    让easyui 的alert 消息框中的确定按钮支持空格键
    修复百度编辑器(UM)禁用时上传图片按钮还可点击的BUG;
  • 原文地址:https://www.cnblogs.com/Sakuraba/p/14159203.html
Copyright © 2020-2023  润新知