0

私は計算機を作成しており、このプログラムの一部はユーザーString入力を受け取り、それをトークン化します (Tokenizerクラスの独自の実装を使用)。今、私はたくさんのTokenオブジェクトを持っています。それらのそれぞれをテストして、数値または演算子を保持しているかどうかを確認したいと思います。

各演算子について、などを使用せずに演算子 (つまり、+、-、*、/、=、(、) など) を保持しているかどうかをテストする方法はあり
if (token.equals("+") || token.equals("-") || ...ますか? これらのTokenオブジェクトはすべてタイプStringです。

4

2 に答える 2

5

それらがすべて単一文字の文字列である場合は、次のことができます。

if ("+-*/=()".indexOf(token) > -1) {

    // if you get into this block then token is one of the operators.

}

配列を使用して、対応するトークンの優先順位を示す値を保持することもできます。

int precedence[] = { 2, 2, 3, 3, 1, 4, 4 };  // I think this is correct

int index = "+-*/=()".indexOf(token); 
if (index > -1) {

    // if you get into this block then token is one of the operators.
    // and its relative precedence is precedence[index]

}

ただし、これはすべて、演算子が 1 文字のみであることを前提としているため、このアプローチを取ることができるのはこれくらいです。

于 2012-11-25T04:58:18.657 に答える
1

これには String contains を使用することもできます。

 String operators = "+-*/=()";
String token ="+";

if(operators.contains(token)){

    System.out.println("here");
}
于 2012-11-25T05:22:52.730 に答える