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