这应该删除,但编辑它

时间:2014-04-18 04:06:36

标签: button

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

我需要在JAVA中创建一个简单的计算器,并且无法弄清楚如何在编码中实现算法。其他一切都很好......包括按钮。

但是,我不知道在没有编译器崩溃的情况下如何在代码中包含算法。

任何帮助取悦!!

3 个答案:

答案 0 :(得分:1)

  

但是,我不知道如何包含算法   没有编译器崩溃的代码。

可能会有很多答案。

考虑以下几点

何时进行操作?用户点击等号后,但如果用户想要添加(或其他),那么你需要为此编写代码。

所以以这种方式思考。


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

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

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

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

答案 1 :(得分:1)

非常简化的答案,但它会让你知道如何继续:

声明两个新字段:

...
private JTextField inText;

private int firstOperand, secondOperand;

添加一些逻辑,处理点击“+”按钮和“=”按钮。

...
    else if (actionCommand.equals("Clear"))
        inText.setText("");
    else if (actionCommand.equals("+")) {
        firstOperand = Integer.parseInt(inText.getText());
        inText.setText("");
    } else if (actionCommand.equals("=")) {
        secondOperand = Integer.parseInt(inText.getText());
        inText.setText(Integer.toString(firstOperand + secondOperand));
    }

答案 2 :(得分:1)

扩展TAsk的答案,可以用很少的代码完成:

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("");
        }
    }

如果按下的按钮不是clear / reset / =只是将按钮文本附加到文本字段。按钮0-9,+, - ,*,/不需要单独操作,因为你想对它们中的任何一个做同样的操作。

当用户按“=”时,使用ScriptEngine进行计算,然后显示结果。

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

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...

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