Java计算器 - 循环通过字符串数组

时间:2014-01-05 18:12:04

标签: java calculator

我是一个编程初学者,我在java中创建了一个计算器,但是在为一个字符循环list2数组时遇到问题,然后转换为通过getToken方法运行的字符数据类型。有人能帮帮我吗?

这是getToken方法......

    public Precedence getToken(char symbol)
{
    switch (symbol)
    {
        case '('  : return Precedence.lparen;
        case ')'  : return Precedence.rparen;
        case '+'  : return Precedence.plus;
        case '-'  : return Precedence.minus;
        case '/'  : return Precedence.divide;
        case '*'  : return Precedence.times;
        case '%'  : return Precedence.mod;
        case ' '  : return Precedence.eos;
        default   : return Precedence.operand;
    }
}

这是后缀功能

/** Function to convert infix to postfix **/

public String postfix(String infix)
{
    String postfix = "";
    top = 0;
    String s = infix.replaceAll("\\s+", "");
    //int p = infix.length();
    stack = new Precedence[infix.length()];
    stack[0] = Precedence.eos;
    String [] str = infix.split(" ");
    List<String> list2 = Arrays.asList(str);

    Precedence token;

    if (s.matches("[-+/*0-9]+[-+/*0-9]"))
    {
        System.out.println("true");
    }
    else
    {
        System.err.println("Invalid expression!");
    }

    for (int i = 0; i < list2.size(); i++)
    {     
        if (list2.get(i).matches("\\p{Punct}"))
        {
            token = getToken(list2.get(i));
        }
    }

1 个答案:

答案 0 :(得分:1)

您的方法采用char参数

public Precedence getToken(char symbol)

您正在尝试将字符串传递给它

List<String> list2 = Arrays.asList(str);
...
token = getToken(list2.get(i));

编辑正如@ahanin所指出的那样,该列表是一个完整的操作。在这种情况下,他的评论是正确的,您需要使用.charAt(0)

token = getToken(list2.get(i).charAt(0));