2017-10-17 4 views
1

次の2行のコードがあります。実行する条件文の条件を設定しました。しかし、条件が満たされなくても条件内のプログラムが実行されるため、ロジックに問題があります。Java:条件文のロジックが機能せず、条件が満たされなくてもプログラムを実行できます。

if (!(token.equals('+')) && !(token.equals('-')) && !(token.equals('*')) && !(token.equals('/'))) { 
      operandStack.push(Integer.valueOf(token)); 
     } 

私はjava.lang.NumberFormatExceptionを取得しています:入力文字列の場合: - このコードの2行目に「何でもオペレータ私は私のテストケースに入ることを(+、*、および/)」およびI Integer.valueOf()はシンボルに対しては機能しませんが、それは問題です。シンボルの場合は、最初に実行するべきではありません。私はすべての種類の誤植や愚かな構文ミスを探してみましたが、何も見つかりませんでした。この論理に何が問題なの?

+0

「トークン」とは何ですか?私はそれが「弦」であることを鋭敏にしています。 – azurefrog

+0

'token'は文字列ですか?それを 'char'値と比較しています。 – Blorgbeard

+1

一重引用符を二重引用符で置き換えてください。 – vikarjramun

答えて

0

あなたはトークンが正規表現を経由して整数であるかどうかを確認することをお勧めするかもしれない。そして、

if (token.matches("\\d+")) { 
    operandStack.push(Integer.parseInt(token)); 
} 

と整数に文字列を解析します。

パターン\d+(Javaではダブルエスケープ)は、1桁以上の数字に一致します。

関連する問題