添加带有“添加”一词的数字

时间:2012-08-19 00:46:52

标签: java addition scriptengine

我现在写的是用Java提供一个应用程序而不是使用运算符“+”,应用程序的用户可以逐字地使用“add”这个词来将两个数字加在一起。

我完全不知道如何做到这一点,因为我不能真正使用方法来完成函数,因为我必须输入“add()”而不是“add”。除非有办法在没有括号的情况下执行方法。我是否必须写一个全新的课程,或者有更简单的方法吗?

4 个答案:

答案 0 :(得分: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)说..你可以称之为calculate(int x, int y, string operation)

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

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

嗯,让你有所思考:)。

答案 1 :(得分:2)

在Java中无法做到这一点。您有两种选择:

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

答案 2 :(得分:2)

评论中的共识似乎是'你为什么要这样做?它很慢而且很麻烦。虽然后一部分是正确的,但通常都是如此。请参阅ScriptEngine作为示例。以下是applet中JavaScript ScriptEngine的演示。

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

答案 3 :(得分:1)

(扩展了user710502提出的想法)

您可以使用reflection

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