0

我现在写信是为了提供一个 Java 应用程序,而不是使用运算符“+”,该应用程序的用户可以字面上使用“add”这个词来将两个数字相加。

我非常坚持如何做到这一点,因为考虑到我必须输入“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..)

然后创建一个方法 thag 获取值 (x, y, string) say.. 你可以调用它calculate(int x, int y, string operation)

然后在calculate方法中有一个switch语句:

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

好吧,让你想想:)。

于 2012-08-19T01:08:00.820 回答
2

在 Java 中没有办法做到这一点。你有两个选择:

1)使用预处理器。2)用不同的语言写。您可以用其他语言编写东西,并且仍然与 Java 类和库兼容。

于 2012-08-19T00:56:19.373 回答
2

评论中的共识似乎是“你为什么要这样做?这是缓慢而麻烦的'。虽然后一部分是正确的,但通常会这样做。看ScriptEngine作为一个例子。这是一个小程序中JavaScript ScriptEngine的演示。

读者可能会注意到这ScriptEngine是一个接口,建议“根据所需的规则实现您自己的脚本引擎”的答案。创建另一种脚本语言是否是一个好主意,留给读者作为练习。

于 2012-08-19T01:38:09.447 回答
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 回答