-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 に答える