-2
        if(!Character.isDigit(tokens[0].charAt(0)) && !line.equals("clear") && !line.equals("var"))
        {
            int value = 0;
            for(int i=0; i<tokens.length; i++)
            {
                if(tokens[i].charAt(0) == '+');
                {
                    if(Character.isDigit(tokens[i].charAt(0)))
                    {
                        int add = Integer.parseInt(tokens[i]);
                        value = value + add;
                    }   
                }
                else
                {
                    System.out.println("No symbol");
                    break;
                }
            }
            map.put(tokens[0], value);
            System.out.println(map);
        }

“无符号”的 else 语句返回一个错误,它没有 if 语句。

4

3 回答 3

5

你的后面有一个额外的分号if

if(tokens[i].charAt(0) == '+');

if如果条件为真,这个分号将有效地成为执行的块。那么接下来的块将无条件执行,else因此与前一个无关if

只需删除该分号即可解决您的问题。

于 2013-10-26T17:44:37.973 回答
2

见 if 语句末尾的分号

   if(tokens[i].charAt(0) == '+');

它应该是

 if(tokens[i].charAt(0) == '+')
于 2013-10-26T17:44:48.747 回答
2

您错误地关闭了 if 语句。

            if(tokens[i].charAt(0) == '+') // notice the missing ";"
            {

你的代码

            if(tokens[i].charAt(0) == '+');  // if statement ends
            {                                                  // code block
                if(Character.isDigit(tokens[i].charAt(0)))
                {
                    int add = Integer.parseInt(tokens[i]);
                    value = value + add;
                }   
            }
            else            // ERROR because the compiler finds an else block but no preceding if block
            {
                System.out.println("No symbol");
                break;
            }
于 2013-10-26T17:45:23.180 回答