資源簡介
java使用后綴表達式實現計算器,其中有將一般數學運算式(7-9+5/5-5*6)轉換成后綴表達式的方法,以及后綴表達式的求解方法
代碼片段和文件信息
package?cn.asam.calculator;
import?java.awt.EventQueue;
import?javax.swing.Jframe;
import?javax.swing.JTextField;
import?javax.swing.SpringLayout;
import?javax.swing.JSeparator;
import?java.awt.Color;
import?javax.swing.JButton;
import?java.awt.Font;
import?javax.swing.SwingConstants;
import?java.awt.event.MouseAdapter;
import?java.awt.event.MouseEvent;
import?java.math.BigDecimal;
import?java.util.Stack;
public?class?Calculator?{
private?Jframe?frmCalculator;
private?JTextField?inputTxt;
private?JTextField?result;
private?JSeparator?separator;
private?JButton?eight;
private?JButton?nine;
private?JButton?multiply;
private?JButton?four;
private?JButton?five;
private?JButton?six;
private?JButton?subtract;
private?JButton?one;
private?JButton?two;
private?JButton?three;
private?JButton?add;
private?JButton?dot;
private?JButton?zero;
private?JButton?divide;
private?JButton?btnEqual;
private?JButton?btnDel;
/**
?*?Launch?the?application.
?*/
public?static?void?main(String[]?args)?{
EventQueue.invokeLater(new?Runnable()?{
public?void?run()?{
try?{
Calculator?window?=?new?Calculator();
window.frmCalculator.setVisible(true);
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
});
}
/**
?*?Create?the?application.
?*/
public?Calculator()?{
initialize();
}
/**
?*?獲取傳入參數按鈕的文本
?*?
?*?@param?btn
?*?@return
?*/
private?String?getBtnText(JButton?btn)?{
String?text?=?null;
text?=?btn.getText();
return?text;
}
/**
?*?將按鈕上的文本顯示到輸入運算式框中
?*?
?*?@param?str
?*?@param?inputTxt
?*/
private?void?txtToInputTxt(String?str?JTextField?inputTxt)?{
String?currentTxt?=?inputTxt.getText();
if?(str.matches(“^[\\+\\-\\*\\/]$“)?&&?currentTxt.matches(“^.+[\\+\\-\\*\\/]$“))?{
//?如果輸入框中的最后一位是(+-*/)中的一位的,就將最后一位去掉,寫上最新的符號
int?strLength?=?currentTxt.length();
String?rStr?=?currentTxt.substring(0?strLength?-?1);
inputTxt.setText(rStr?+?str);
}?else?{
inputTxt.setText(currentTxt?+?str);
}
}
/**
?*?將傳入的一般運算表達式計算出結果
?*?
?*?@param?inputTxt
?*/
private?void?setResult(String?inputTxt)?{
String?suffixExpre?=?toSuffix(inputTxt);
BigDecimal?rSum?=?getSuffixResult(suffixExpre);
result.setText(rSum.doubleValue()?+?““);
}
/**
?*?Initialize?the?contents?of?the?frame.
?*/
private?void?initialize()?{
frmCalculator?=?new?Jframe();
frmCalculator.setResizable(false);
frmCalculator.settitle(“Calculator“);
frmCalculator.getContentPane().setBackground(Color.DARK_GRAY);
frmCalculator.setBounds(800?200?386?454);
frmCalculator.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
inputTxt?=?new?JTextField();
inputTxt.setEditable(false);
inputTxt.setBackground(Color.WHITE);
inputTxt.setBorder(null);
inputTxt.setFont(new?Font(“黑體“?Font.BOLD?32));
inputTxt.setHorizontalAlignment(SwingConstants.RIGHT);
inputTxt.setText(““);
inputTxt
- 上一篇:itext-asian.jar
- 下一篇:Java編寫的吃豆人小游戲
評論
共有 條評論