java实现计算器程序,代码如下:
package code; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.regex.Pattern; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JTextField; /** * * @author Smart * */ public class Calculator extends JFrame implements ActionListener{ private JMenuBar jmb; private JMenu jm; private JMenuItem jmi1; private JTextField result; private JButton key[]; private JPanel jp_but,jp_cal; private Mainpad jp_main; private Container con; private double opernum; private String keytitle[]={"7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "0", ".", "=", "/", "!", "^", "C", "-/+", "1/x", "sqrt", "四舍五入", "back"}, opers = ""; public Calculator() { this.setSize(400,450); this.setTitle("计算器"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.jmb=new JMenuBar(); this.jm=new JMenu("文件"); this.jmi1=new JMenuItem("退出"); this.jm.add(this.jmi1); this.result=new JTextField(); this.key=new JButton[24]; this.jp_but=new JPanel(); this.jp_cal=new JPanel(); this.jp_main=new Mainpad(); this.con=this.getContentPane(); this.jp_but.setLayout(new GridLayout(6,4,5,5)); this.jp_cal.setLayout(new BorderLayout()); this.jp_main.setLayout(new BorderLayout()); this.con.setLayout(new BorderLayout()); Font font = this.result.getFont(); this.result.setFont(new Font(font.getName(), font.getStyle(), 24)); for(int i=0;i<24;i++) { this.key[i]=new JButton(this.keytitle[i]); this.key[i].setSize(60, 60); this.key[i].addActionListener(this); this.jp_but.add(key[i]); //System.out.println(i); } this.jmb.add(jm); this.jp_main.add(jmb,BorderLayout.NORTH); this.jp_main.add(jp_cal,BorderLayout.CENTER); this.jp_cal.add(result,BorderLayout.NORTH); this.jp_cal.add(this.jp_but,BorderLayout.CENTER); this.con.add(jp_main); this.jmi1.addActionListener(this); this.setBackground(Color.RED); this.setLocation(400, 100); this.setVisible(true); } public static void main(String[] args) { new Calculator(); } @Override public void actionPerformed(ActionEvent evt) { // TODO Auto-generated method stub //System.out.println(evt.getActionCommand()); String oper=evt.getActionCommand(); switch(oper) { case "0": this.result.setText(this.result.getText()+oper); break; case "1": this.result.setText(this.result.getText()+oper); break; case "2": this.result.setText(this.result.getText()+oper); break; case "3": this.result.setText(this.result.getText()+oper); break; case "4": this.result.setText(this.result.getText()+oper); break; case "5": this.result.setText(this.result.getText()+oper); break; case "6": this.result.setText(this.result.getText()+oper); break; case "7": this.result.setText(this.result.getText()+oper); break; case "8": this.result.setText(this.result.getText()+oper); break; case "9": this.result.setText(this.result.getText()+oper); break; case "+": this.opernum = Double.valueOf(this.result.getText()); this.result.setText(""); this.opers = "+"; break; case "-": this.opernum = Double.valueOf(this.result.getText()); this.result.setText(""); this.opers = "-"; break; case "*": this.opernum = Double.valueOf(this.result.getText()); this.result.setText(""); this.opers = "*"; break; case "/": this.opernum = Double.valueOf(this.result.getText()); this.result.setText(""); this.opers = "/"; break; case ".": this.result.setText(this.result.getText()+oper); break; case "^": this.opernum=Double.valueOf(this.result.getText()); this.result.setText(this.result.getText()+"^"); this.opers="^"; break; case "-/+": this.result.setText(String.valueOf(-Double.valueOf(this.result.getText()))); break; case "1/x": this.result.setText(String.valueOf(1/(Double.valueOf(this.result.getText())))); break; case "sqrt": this.result.setText(String.valueOf(Math.sqrt(Double.valueOf(this.result.getText())))); break; case "四舍五入": this.result.setText(String.valueOf((int) (Double.valueOf(this.result.getText())+0.5))); break; case "back": if(this.result.getText().length()>0) this.result.setText(this.result.getText().substring(0, this.result.getText().length()-1)); break; case "C": this.result.setText("");break; case "!": this.result.setText(String.valueOf(this.JieCheng(Double.valueOf(this.result.getText())))); break; case "=": switch(this.opers) { case "+": this.result.setText (String.valueOf(this.opernum+Double.valueOf(this.result.getText()))); break; case "-": this.result.setText (String.valueOf(this.opernum-Double.valueOf(this.result.getText()))); break; case "*": this.result.setText (String.valueOf(this.opernum*Double.valueOf(this.result.getText()))); break; case "/": this.result.setText (String.valueOf(this.opernum/Double.valueOf(this.result.getText()))); break; case "^": this.result.setText( String.valueOf((Math.pow(this.opernum, Integer.valueOf(this.result.getText().toString().substring (this.result.getText().toString().indexOf('^')+1)))))); break; default: } break; case "退出": System.exit(0); } } public long JieCheng(double n3) { long n = (long)(n3 + 0.5); if(n==1 || n==0) return n; else if(n>1) { return n*JieCheng(n-1); } else { return 0; } } public boolean isDot(String num) { if(Pattern.matches("[0-9].*", num)) { return false; } else { return true; } } } class Mainpad extends JPanel{ public Mainpad() { this.setBackground(Color.RED); } }