JAVA:在使用算术运算符时遇到问题(到目前为止包含的代码)

时间:2016-03-31 14:00:46

标签: java string

我需要修改evalEevalMD,以便程序现在可以使用+, - ,*,/运算符和正整数或负整数操作数来计算算术表达式。我已经使用它来处理基本方程式,但是如果我将等式25 + -2放入,我会收到错误。以下是我到目前为止的情况:

int evalE(String exp)   
{
    int result = 0;
    String tmp="";
    char ch;

    for (int i=exp.length()-1;i>=0;i--)
    {   ch = exp.charAt(i);
        if (ch == '+')
        {
            result += evalMD(tmp);
            tmp = "";
        }
        else if (ch == '-')
        {
            result -= evalMD(tmp);
            tmp = "";
        }
        else
            tmp = ch+tmp;

    }

    if (exp.charAt(0) != '+' && exp.charAt(0) != '-')
         result += evalMD(tmp);

    return result;
}


int evalMD(String exp)
{
    int result = 1;
    String tmp = "";
    char previousOP = '*';

    for (int i=0;i<exp.length();i++)
    {
        char ch = exp.charAt(i);
        if (ch == '*' || ch == '/')
        {
            if (previousOP == '*')
                result *= Integer.parseInt(tmp);
            else
                result /= Integer.parseInt(tmp);

            tmp = "";
            previousOP = ch;
        }
        else
            tmp = tmp+ch;
    }

    if (previousOP == '*')
        result *= Integer.parseInt(tmp);
    else
        result /= Integer.parseInt(tmp);            

    return result;
}

为什么我的等式不适用于上述情况?任何帮助深表感谢。谢谢。

1 个答案:

答案 0 :(得分:0)

看了你的代码之后,似乎如果第二个数字是负数,(无论操作数),程序将发送错误。我建议制作一个场景,其中第二个数字,如果是负数,将括在括号中。例如25 +( - 10)。通过这样做,应该更容易看出是否会出现负面影响。 另外,也许您应该检查代码以获得除法操作数。它现在只进行整数除法,(24/20 = 1)但是如果你想要它做一个真正的除法,你必须将方法的返回类型改为“加倍”。