⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comexpression.java

📁 一套完整的工商12315的源程序jsp部分在12315里,后台JAVA部分在gs12315src里,没有打包数据库.
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                                                exp = lopn1 + lopr + lopn2;
                                          //  }
                                             operand.push(exp);
                                        }
                                        exp = (String)operand.pop();
                                        ComExpression cx = new ComExpression(exp);
                                        this.resultStr   = cx.getResultStr();
                                        return;
                                    }
                                    else
                                    {
                                         operator.push(temp);
                                          ///////////////使用递归计算“(”和“)”之间的数据////////////////
                                          ////////////////////////////////////////////////////////////////////
                                   }
                              }
                                break;
                        }
                    }
                    numCount = 0;
                }
           }
        }
        //////////////////////////////////////////////////////////////////////
    }
    
    /////////////////////////计算//////////////////////////////////////
    public static String colcu(String op,String opn1,String opn2)
    {
        double lresult;
        String lresultStr = null;
        Double dopn1 = new Double(opn1);
        Double dopn2 = new Double(opn2);
        switch(op.charAt(0))
        {
            case '+':
                lresult = dopn1.doubleValue() + dopn2.doubleValue();
                //lresultStr = ComExpression.floadToint(lresult);
                lresultStr = String.valueOf(lresult);
                for(int i = 0;i < lresultStr.length();i++)
                {
                    if((lresultStr.substring(i,i+1).hashCode() < 48||lresultStr.substring(i,i+1).hashCode() > 57)&&!lresultStr.substring(i,i+1).equals(".")&&!lresultStr.substring(i,i+1).toLowerCase().equals("e")&&!lresultStr.substring(i,i+1).equals("+")&&!lresultStr.substring(i,i+1).equals("-"))
                    {
                        isError = true;
                        ComExpression.errorStr = "数据溢出错误!";
                        return null;
                    }
                }
                break;
           case '-':
                lresult = dopn1.doubleValue() - dopn2.doubleValue();
                //lresultStr = ComExpression.floadToint(lresult);
                lresultStr = String.valueOf(lresult);
                 for(int i = 0;i < lresultStr.length();i++)
                {
                    if((lresultStr.substring(i,i+1).hashCode() < 48||lresultStr.substring(i,i+1).hashCode() > 57)&&!lresultStr.substring(i,i+1).equals(".")&&!lresultStr.substring(i,i+1).toLowerCase().equals("e")&&!lresultStr.substring(i,i+1).equals("+")&&!lresultStr.substring(i,i+1).equals("-"))
                    {
                        isError = true;
                        ComExpression.errorStr = "数据溢出错误!";
                        return null;
                    }
                }
                break;
           case '*':
                lresult = dopn1.doubleValue() * dopn2.doubleValue();
                //lresultStr = ComExpression.floadToint(lresult);
                lresultStr = String.valueOf(lresult);
                 for(int i = 0;i < lresultStr.length();i++)
                {
                    if((lresultStr.substring(i,i+1).hashCode() < 48||lresultStr.substring(i,i+1).hashCode() > 57)&&!lresultStr.substring(i,i+1).equals(".")&&!lresultStr.substring(i,i+1).toLowerCase().equals("e")&&!lresultStr.substring(i,i+1).equals("+")&&!lresultStr.substring(i,i+1).equals("-"))
                    {
                        isError = true;
                        ComExpression.errorStr = "数据溢出错误!";
                        return null;
                    }
                }
                break;
           case '/':
                if(dopn2.doubleValue()==0)
                {
                    ComExpression.errorStr = "除数为0";
                    isError = true;
                    return null;
                }
                lresult = dopn1.doubleValue() / dopn2.doubleValue();
                //lresultStr = ComExpression.floadToint(lresult);
                lresultStr = String.valueOf(lresult);
                 for(int i = 0;i < lresultStr.length();i++)
                {
                    if((lresultStr.substring(i,i+1).hashCode() < 48||lresultStr.substring(i,i+1).hashCode() > 57)&&!lresultStr.substring(i,i+1).equals(".")&&!lresultStr.substring(i,i+1).toLowerCase().equals("e")&&!lresultStr.substring(i,i+1).equals("+")&&!lresultStr.substring(i,i+1).equals("-"))
                    {
                        isError = true;
                        ComExpression.errorStr = "数据溢出错误!";
                        return null;
                    }
                }
                break;
            case '^':
                try
                {
                    lresult = Math.pow(dopn1.doubleValue(),dopn2.doubleValue());
                    lresultStr = String.valueOf(lresult);
                     for(int i = 0;i < lresultStr.length();i++)
                    {
                        if((lresultStr.substring(i,i+1).hashCode() < 48||lresultStr.substring(i,i+1).hashCode() > 57)&&!lresultStr.substring(i,i+1).equals(".")&&!lresultStr.substring(i,i+1).toLowerCase().equals("e")&&!lresultStr.substring(i,i+1).equals("+")&&!lresultStr.substring(i,i+1).equals("-"))
                        {
                            isError = true;
                            ComExpression.errorStr = "数据溢出错误!";
                            return null;
                        }
                    }
                    break;
                }
                catch(ArithmeticException ae)
                {
                    ComExpression.errorStr = ae.toString();
                    isError = true;
                    return null;
                }
          case 'c':
                try
                {
                    lresult = Math.cos(dopn1.doubleValue());
                    lresultStr = String.valueOf(lresult);
                     for(int i = 0;i < lresultStr.length();i++)
                    {
                        if((lresultStr.substring(i,i+1).hashCode() < 48||lresultStr.substring(i,i+1).hashCode() > 57)&&!lresultStr.substring(i,i+1).equals(".")&&!lresultStr.substring(i,i+1).toLowerCase().equals("e")&&!lresultStr.substring(i,i+1).equals("+")&&!lresultStr.substring(i,i+1).equals("-"))
                        {
                            isError = true;
                            ComExpression.errorStr = "数据溢出错误!";
                            return null;
                        }
                    }
                    break;
                }
                catch(ArithmeticException ae)
                {
                    ComExpression.errorStr = ae.toString();
                    isError = true;
                    return null;
                }
          case 's':
                try
                {
                    lresult = Math.sin(dopn1.doubleValue());
                    lresultStr = String.valueOf(lresult);
                    for(int i = 0;i < lresultStr.length();i++)
                    {
                        if((lresultStr.substring(i,i+1).hashCode() < 48||lresultStr.substring(i,i+1).hashCode() > 57)&&!lresultStr.substring(i,i+1).equals(".")&&!lresultStr.substring(i,i+1).toLowerCase().equals("e")&&!lresultStr.substring(i,i+1).equals("+")&&!lresultStr.substring(i,i+1).equals("-"))
                        {
                            isError = true;
                            ComExpression.errorStr = "数据溢出错误!";
                            return null;
                        }
                    }
                    break;
                }
                catch(ArithmeticException ae)
                {
                    ComExpression.errorStr = ae.toString();
                    isError = true;
                    return null;
                }
           case 't':
                try
                {   
                    lresult = Math.tan(dopn1.doubleValue());
                    lresultStr = String.valueOf(lresult);
                    for(int i = 0;i < lresultStr.length();i++)
                    {
                        if((lresultStr.substring(i,i+1).hashCode() < 48||lresultStr.substring(i,i+1).hashCode() > 57)&&!lresultStr.substring(i,i+1).equals(".")&&!lresultStr.substring(i,i+1).toLowerCase().equals("e")&&!lresultStr.substring(i,i+1).equals("+")&&!lresultStr.substring(i,i+1).equals("-"))
                        {
                            isError = true;
                            ComExpression.errorStr = "数据溢出错误!";
                            return null;
                        }
                    }
                    break;
                }
                catch(ArithmeticException ae)
                {
                    ComExpression.errorStr = ae.toString();
                    isError = true;
                    return null;
                }
            case 'e':
                try
                {
                    lresult = Math.exp(dopn1.doubleValue());
                    lresultStr = String.valueOf(lresult);
                    for(int i = 0;i < lresultStr.length();i++)
                    {
                        if((lresultStr.substring(i,i+1).hashCode() < 48||lresultStr.substring(i,i+1).hashCode() > 57)&&!lresultStr.substring(i,i+1).equals(".")&&!lresultStr.substring(i,i+1).toLowerCase().equals("e")&&!lresultStr.substring(i,i+1).equals("+")&&!lresultStr.substring(i,i+1).equals("-"))
                        {
                            isError = true;
                            ComExpression.errorStr = "数据溢出错误!";
                            return null;
                        }
                    }
                    break;
                }
                catch(ArithmeticException ae)
                {
                    ComExpression.errorStr = ae.toString();
                    isError = true;
                    return null;
                }
            case 'l':
                try
                {
                    if(dopn1.doubleValue() <= 0)
                    {
                        ComExpression.errorStr = "ln的参数必须大于0.0";
                        isError = true;
                        return null;
                    }
                    lresult = Math.log(dopn1.doubleValue());
                    lresultStr = String.valueOf(lresult);
                    for(int i = 0;i < lresultStr.length();i++)
                    {
                        if((lresultStr.substring(i,i+1).hashCode() < 48||lresultStr.substring(i,i+1).hashCode() > 57)&&!lresultStr.substring(i,i+1).equals(".")&&!lresultStr.substring(i,i+1).toLowerCase().equals("e")&&!lresultStr.substring(i,i+1).equals("+")&&!lresultStr.substring(i,i+1).equals("-"))
                        {
                            isError = true;
                            ComExpression.errorStr = "数据溢出错误!";
                            return null;
                        }
                    }
                    break;
                }
                catch(ArithmeticException ae)
                {
                    ComExpression.errorStr = ae.toString();
                    isError = true;
                    return null;
                }
                //lresultStr = ComExpression.floadToint(lresult);
        }
        return lresultStr;
    }
    public static String getTop(Stack dt)//取栈顶元素
    {
        String tp = (String)dt.pop();
        dt.push(tp);
        return tp;
    }
    ////////////////////////////////////
    ////////////////////////////////////检测表达式的合法性///////////////////////////////////////////////////
    public static boolean isLegality(String exp)
    {
        boolean isLeg = false;
        String[] op_temp = new String[13];
        op_temp[0] = ADD;
        op_temp[1] = MINUSE;
        op_temp[2] = RIDE;
        op_temp[3] = DIVIDE;
        op_temp[4] = ".";
        op_temp[5] = "^";//乘方
        op_temp[6] = LEFT_BRACKET;
        op_temp[7] = RIGHT_BRACKET;
        op_temp[8] = "c";//cos
        op_temp[9] = "s";//sin
        op_temp[10] = "t";//tan
        op_temp[11] = "e";//exp
        op_temp[12] = "l";//ln自然对数
        int index = 0;
        
        if((index = exp.indexOf("c")) >= 0&&!exp.substring(index,index+3).equals("cos"))
        {
            errorStr = "表达式中含有字符‘c’";
            return true;
        }
        if((index = exp.indexOf("s")) >= 0&&index < 2&&!exp.substring(index,index+3).equals("sin"))
        {
            errorStr = "表达式中含有字符‘s’";
            return true;
        }
        if((index = exp.indexOf("s")) >= 2&&(exp.length() >= index+3)&&!exp.substring(index,index+3).equals("sin")&&!exp.substring(index-2,index+1).equals("cos"))
        {
            errorStr = "表达式中含有字符‘s’";
            return true;
        }
        if((index = exp.indexOf("s")) >= 2&&(exp.length() < index+3)&&!exp.substring(index-2,index+1).equals("cos"))
        {
            errorStr = "表达式中含有字符‘s’";
            return true;
        }
        if((index = exp.indexOf("t")) >= 0&&!exp.substring(index,index+3).equals("tan"))
        {
            errorStr = "表达式中含有字符‘t’";
            return true;
        }
        if((index = exp.indexOf("e")) >= 0&&!exp.substring(index,index+3).equals("exp"))
        {
            errorStr = "表达式中含有字符‘e’";
            return true;
        }
        if((index = exp.indexOf("l")) >= 0&&!exp.substring(index,index+2).equals("ln"))
        {
            errorStr = "表达式中含有字符‘l’";
            return true;
        }
        ///////////////////////////////////////
        while(true)
        {
            index = exp.indexOf("cos");
            if(index >= 0)
            {
                exp = exp.substring(0,index + 1) + exp.substring(index + 3);//将cos转化为:c
            }
            else
            {
                index = exp.indexOf("sin");
                if(index >= 0)
                {
                    exp = exp.substring(0,index + 1) + exp.substring(index + 3);//将sin转化为:s
                }
                else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -