为什么我的代码说else语句没有if语句?

时间:2013-10-26 17:43:29

标签: java

        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语句。

3 个答案:

答案 0 :(得分:5)

您的if

后面有一个额外的分号
if(tokens[i].charAt(0) == '+');

如果if条件为真,则此分号实际上将是执行的块。然后,将无条件执行以下块,因此else与之前的if无关。

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

答案 1 :(得分:2)

请参阅if Statement

末尾的分号
   if(tokens[i].charAt(0) == '+');

应该是

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

答案 2 :(得分: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;
            }