Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用“添加”一词添加数字;加上「;_Java_Addition_Scriptengine - Fatal编程技术网

Java 用“添加”一词添加数字;加上「;

Java 用“添加”一词添加数字;加上「;,java,addition,scriptengine,Java,Addition,Scriptengine,我现在写这篇文章是为了用Java提供一个应用程序,而不是使用操作符“+”,应用程序的用户可以直接使用单词“add”将两个数字相加 我一直在思考如何做,因为我无法真正使用方法来完成函数,因为我必须键入“add()”而不仅仅是“add”。除非有办法执行不带括号的方法。我是否需要编写一个全新的类,或者有更简单的方法来实现这一点?在Java中无法实现这一点。您有两个选择: 1) 使用预处理器。 2) 用另一种语言写。您可以使用其他语言编写内容,但仍然可以使其与Java类和库兼容。根据用户输入的内容对您可

我现在写这篇文章是为了用Java提供一个应用程序,而不是使用操作符“+”,应用程序的用户可以直接使用单词“add”将两个数字相加


我一直在思考如何做,因为我无法真正使用方法来完成函数,因为我必须键入“add()”而不仅仅是“add”。除非有办法执行不带括号的方法。我是否需要编写一个全新的类,或者有更简单的方法来实现这一点?

在Java中无法实现这一点。您有两个选择:

1) 使用预处理器。
2) 用另一种语言写。您可以使用其他语言编写内容,但仍然可以使其与Java类和库兼容。

根据用户输入的内容对您可以执行的操作进行一点说明:

int x = get it from the user;
int y = get it from the user;
string operation = get it from the user;
  • 为操作创建单独的方法
    (即加法(int x,int y),乘法(int x,int y)等)
然后创建一个方法thag获取值(x,y,string),比如。。您可以将其称为
calculate(intx,inty,字符串操作)

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

switch(operation)
{
case "add":
      add(x,y);
      break;
case "multiply":
      multiply(x,y);
      break;
etc...
}
好吧,让你想一想:)。

(对user710502提出的想法的扩展)

你可以用

在某种计算类中:

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

评论中的共识似乎是“你为什么要这样做?”?它既慢又笨重。虽然后一部分是正确的,但通常是这样做的。请看一个例子。下面是一个小程序中的示例


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

你到底为什么要这样做?我只是想尝试一些不同的东西,我喜欢让自己思考。@Twisterz在Java中,最接近这种行为的方法是编写自己的方法,该方法包含两个参数和一个运算符,并计算结果。我不建议这样做,因为它会很快变得麻烦、低效和混乱。在编码中,没有真正的理由(除了你不能这样做之外)这样做,但是你可以在用户界面上这样做,就像用户输入两个数字和单词“add”1 add 2一样,然后您可以在字符串中搜索单词add,如果它在那里,您可以调用add(x,y)函数。。。差不多that@Jeffrey这似乎是为了“向最终用户提供能力”。这样做更有意义,通过使用反射可以进一步简化。可以使用x和y作为参数来调用该方法,而不是为相同名称的每个方法设置一个case。我之前写过这个概念作为一个答案(如果有人感兴趣的话,它仍然存在于答案框中),但我没有发布它,因为我重新阅读了这个问题,认为它不是一个好答案。我感兴趣的是看到它@Vulcan@Vulcan是的,把它放出来。。我只是简单介绍一下可以做些什么。。并没有想到要优化它。。但是如果你是那个人。。这会很酷:)@user710502就速度而言,这可能不是一个优化(如果我没记错的话,反射比switch语句需要更多的时间来执行,但差别不大)。但是,它简化了代码并简化了新操作符的实现。这是一个非常有趣的答案,感谢分享!为了进一步阅读反思,
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