2013-10-26 79 views
-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语句的错误。为什么我的代码表示else语句没有if语句?

回答

5

您有多余的分号您if

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

这分号之后将有效地如果if条件为真时执行该块。那么下面的块将被无条件执行,因此else与之前的if无关。

只要删除该分号,它会解决您的问题。

2

见分号if语句

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

应该

if(tokens[i].charAt(0) == '+') 
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; 
      }