Button 应将其删除,但应将其编辑

Button 应将其删除,但应将其编辑,button,Button,我已经在这个项目上工作了好几个小时了 我需要用JAVA创建一个简单的计算器,但我不知道如何在编码中实现算法。其他一切都很好…包括按钮 但是,我不知道如何甚至在哪里在代码中包含算术,而不会导致编译器崩溃 请帮忙 然而,我不知道如何,甚至不知道在哪里包括算术 没有编译器崩溃的代码 答案可能很多 思考以下几点 何时进行手术?在用户单击等号之后,若用户想要添加(或其他东西),那个么您也需要为此编写代码 所以这样想吧 您可以使用ScriptEngineManager计算在String中创建的表达式 Sc

我已经在这个项目上工作了好几个小时了

我需要用JAVA创建一个简单的计算器,但我不知道如何在编码中实现算法。其他一切都很好…包括按钮

但是,我不知道如何甚至在哪里在代码中包含算术,而不会导致编译器崩溃

请帮忙

然而,我不知道如何,甚至不知道在哪里包括算术 没有编译器崩溃的代码

答案可能很多

思考以下几点

何时进行手术?在用户单击等号之后,若用户想要添加(或其他东西),那个么您也需要为此编写代码

所以这样想吧


您可以使用
ScriptEngineManager
计算在
String
中创建的表达式

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");

engine.eval(expression);//evaluate expression String


但是请使用
try{}catch{}
来处理异常。

非常简单的答案,但它会告诉您如何继续:

声明两个新字段:

...
private JTextField inText;

private int firstOperand, secondOperand;
添加一些逻辑,点击“+”按钮和“=”按钮


扩展任务的答案,只需很少的代码即可完成:

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
...

    public void actionPerformed(ActionEvent e)
    {
        String actionCommand = e.getActionCommand();

        if (actionCommand.equals("Clear"))
            inText.setText("");
        else if (actionCommand.equals("Reset"))
            inText.setText("");
        else if (actionCommand.equals("="))
            calculate();
        else
            inText.setText(inText.getText() + actionCommand);
    }

    public void calculate()
    {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("JavaScript");
        try
        {
            inText.setText(engine.eval(inText.getText()) + "");//evaluate expression String
        } catch (ScriptException ex)
        {
            inText.setText("");
        }
    }
如果按下的按钮不是清除/重置/=只需将按钮文本附加到文本字段。不需要对按钮0-9、+、-、*/执行单独的操作,因为您希望对其中任何一个按钮执行相同的操作

当用户按下“=”键时,使用脚本引擎进行计算,然后显示结果

如果您想要更简单的计算,可以这样做:

String e = inText.getText();
if(e.indexOf("+") >= 0)
{
    String[] n = e.split("+");
    int a = Integer.parseInt(n[0]);
    int b = Integer.parseInt(n[2]);
    inText.setText(String.valueOf(a + b));
}
else if(e.indexOf("-") >= 0)
{
    String[] n = e.split("-");
    int a = Integer.parseInt(n[0]);
    int b = Integer.parseInt(n[2]);
    inText.setText(String.valueOf(a - b));
}
else if...

只需添加一些边界检查和错误处理。

谢谢!这真的帮了大忙!好的,我是JAVA新手,现在加法可以工作了,但是当我尝试加减法时。除法和乘法,然后所有按钮都不起作用。这是因为顺序/优先级错误吗?不,这是因为您应该自己实现*/和-的逻辑。这段代码只处理+@Marco我知道逻辑,我只是不知道如何实现它…如果我知道如何编写逻辑,那么我就不需要帮助了,对吗?哈哈,谢谢你,但是他给了你代码,试着阅读它而不是粘贴它,你会明白逻辑不?毕竟,您应该只将“+”替换为“-”(*等)谢谢,但是当“ScriptEngineManager”被编码时会出现一个错误……我需要一个特殊的导入来在Eclipse中实现这一点吗?添加了导入来回答,但按“Ctrl+Shift+O”“Eclipse应该为您导入它们。谢谢,它很有效!但要知道,有没有其他方法可以在不在计算方法中实现“ScriptEngineManager”的情况下实现这一点?比如我可以使用一个开关或某种if语句,或者这样做会效率低下吗?不一定效率低下,但这需要更多的工作/原创思维,但另一方面,你可能会从中学到更多。回答不错Martin:)
String e = inText.getText();
if(e.indexOf("+") >= 0)
{
    String[] n = e.split("+");
    int a = Integer.parseInt(n[0]);
    int b = Integer.parseInt(n[2]);
    inText.setText(String.valueOf(a + b));
}
else if(e.indexOf("-") >= 0)
{
    String[] n = e.split("-");
    int a = Integer.parseInt(n[0]);
    int b = Integer.parseInt(n[2]);
    inText.setText(String.valueOf(a - b));
}
else if...