我现在写的是用Java提供一个应用程序而不是使用运算符“+”,应用程序的用户可以逐字地使用“add”这个词来将两个数字加在一起。
我完全不知道如何做到这一点,因为我不能真正使用方法来完成函数,因为我必须输入“add()”而不是“add”。除非有办法在没有括号的情况下执行方法。我是否必须写一个全新的课程,或者有更简单的方法吗?
答案 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