0

私は今、Java でアプリケーションを提供するために書いていますが、アプリケーションのユーザーは、演算子「+」を使用する代わりに、文字どおり「add」という単語を使用して 2 つの数値を足し合わせることができます。

「add」ではなく「add()」と入力する必要があることを考えると、関数を完了するためにメソッドを実際に使用できないため、これを行う方法にかなりこだわっています。かっこなしでメソッドを実行する方法がない限り。まったく新しいクラスを作成する必要がありますか、それとももっと簡単な方法がありますか?

4

4 に答える 4

3

ユーザーが入力した内容に基づいて何ができるかについての簡単な説明:

int x = get it from the user;
int y = get it from the user;
string operation = get it from the user;
  • 操作用に個別のメソッドを作成する(i.e add(int x, int y), multiply(int x, int y), etc..)

次に、値(x、y、文字列)を取得するメソッドを作成します..それを呼び出すことができますcalculate(int x, int y, string operation)

次に、calculuate メソッドに switch ステートメントを含めます。

switch(operation)
{
case "add":
      add(x,y);
      break;
case "multiply":
      multiply(x,y);
      break;
etc...
}

さて、あなたに考えてもらいたいことがあります:)。

于 2012-08-19T01:08:00.820 に答える
2

コメントのコンセンサスは、「なぜこれをやりたいのですか?」のようです。それは遅くて面倒です。」後者の部分は真実ですが、一般的に行われています。ScriptEngine例として参照してください。これは、アプレットでのJavaScript ScriptEngineのデモです。

読者は、それScriptEngineがインターフェイスであり、「必要なルールに基づいて独自のスクリプト エンジンを実装する」という答えを示唆していることに気付くかもしれません。別のスクリプト言語を作成することが良い考えであるかどうかは、読者の課題として残されています。

于 2012-08-19T01:38:09.447 に答える
2

Java でこれを行う方法はありません。次の 2 つのオプションがあります。

1) プリプロセッサを使用します。2) 別の言語で書いてください。他の言語で記述しても、Java クラスおよびライブラリとの互換性を保つことができます。

于 2012-08-19T00:56:19.373 に答える
1

(user710502によって提示されたアイデアの拡張)

リフレクションを使用できます。

double a = Double.parseDouble(some user input);
double b = Double.parseDouble(some user input);
String operation = some user input; // i.e. "add", "subtract"
Method operator = Calculations.class.getMethod(operation, double.class, double.class);
// NoSuchMethodException is thrown if method of operation name isn't found
double result = (Double) operator.invoke(null, a, b);

ある種の計算クラスでは:

public static double add(double a, double b) {
    return a + b;
}

public static double subtract(double a, double b) {
    return a - b;
}

// and so forth
于 2012-08-19T01:30:38.140 に答える