我已经在这个项目上工作了好几个小时!!
我需要在JAVA中创建一个简单的计算器,并且无法弄清楚如何在编码中实现算法。其他一切都很好......包括按钮。
但是,我不知道在没有编译器崩溃的情况下如何在代码中包含算法。
任何帮助取悦!!
答案 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...
只需添加一些边界检查和错误处理。