我正在自学Java而不是通常的“你好世界!”我认为在构建计算机应用程序并学习Java时会更好。
我的问题是:我如何编写“(”和“)”括号键,以便我可以在我的计算器应用程序中使用它们。
我的应用中的典型数字按钮(2)是:
Firebase ref = new Firebase("https://<yourapp>.firebaseio.com");
ListAdapter adapter = new FirebaseListAdapter<ChatMessage>(this, ChatMessage.class, android.R.layout.two_line_list_item, mRef)
{
protected void populateView(View view, ChatMessage chatMessage)
{
((TextView)view.findViewById(android.R.id.text1)).setText(chatMessage.getName());
((TextView)view.findViewById(android.R.id.text2)).setText(chatMessage.getMessage());
}
};
listView.setListAdapter(adapter);
我的应用中的典型操作数按钮( - )是:
private void btnTwoActionPerformed(java.awt.event.ActionEvent evt) {
if (bFinish == false) {
String btnTwoText = txtDisplay.getText() + btnTwo.getText();
dObtainer = Double.parseDouble(btnTwoText);
txtDisplay.setText(btnTwoText);
} else {
txtDisplay.setText("");
String btnTwoText = txtDisplay.getText() + btnTwo.getText();
dObtainer = Double.parseDouble(btnTwoText);
txtDisplay.setText(btnTwoText);
bFinish = false;
}
}
按下“等于”按钮时会发生这种情况。
private void btnMinusActionPerformed(java.awt.event.ActionEvent evt) {
String button_text = "-";
getOperator(button_text);
}
private void getOperator(String btnText) {
mathOperator = btnText.charAt(0);
dTotal1 = dTotal1 + dObtainer;
txtDisplay.setText("");
}
答案 0 :(得分:1)
您可以使用StringBuilder
创建表达式(如2+(1-5)
),然后使用:
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
...
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String exp = sb.toString(); //sb is the string builder
int result = 0;
try {
result = (int) engine.eval(exp);
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//from here you can use result in whatever way you want
答案 1 :(得分:1)
作为初学者,我建议只使用内置的Javascript engine
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String foo = "4+5+(8*4)"; //replace your expression here
System.out.println(engine.eval(foo));
您可以使用另一个MVEL