龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

利用java做一个简单的计算器

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
共两个类。还只是完成+、-、×、÷运算而已。 GUI只是用了AWT,很简单,相信一看就能懂了。 Calculator.Java publicclassCalculator{ privateStringresult="0"; privateintop=0,add=1,sub=2,mul=3,div=4; privatedou

      共两个类。还只是完成+、-、×、÷运算而已。

      GUI只是用了AWT,很简单,相信一看就能懂了。
  Calculator.Java
  
  public class Calculator{
  private String result = "0";
  private int op = 0,add = 1,sub = 2,mul = 3,div = 4;
  
  private double stringToDouble(String x){
  double y = Double.parseDouble(x);
  return y;
  }
  private void operate(String x){
  double x1 = stringToDouble(x);
  double y = stringToDouble(result);
  switch (op){
  case 0:
  result = x;
  break;
  case 1:
  result = String.valueOf(y+x1);
  break;
  case 2:
  result = String.valueOf(y-x1);
  break;
  case 3:
  result = String.valueOf(y*x1);
  break;
  case 4:
  if(x1!=0){
  result = String.valueOf(y/x1);
  }else{
  result = "The divisor can't be zero!";
  }
  break;
  }
  }
  
  public String opAdd(String x){
  operate(x);
  op = add;
  return result;
  }
  public String opSuBTract(String x){
  operate(x);
  op = sub;
  return result;
  }
  public String opMultiply(String x){
  operate(x);
  op = mul;
  return result;
  }
  public String opDivide(String x){
  operate(x);
  op = div;
  return result;
  }
  public String opEquals(String x){
  operate(x);
  op = 0;
  return result;
  }
  public void opClean(){
  op = 0;
  result = "0";
  }
  }
  
  -------------------------------------------------------------------
  
  第二个
  CalculatorGUI.java
  
  import java.awt.*;
  import java.awt.event.*;
  import java.util.EventObject;
  
  public class CalculatorGUI{
  private Frame f;
  private Panel p1,p2;
  private Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9;
  private Button bPoint,bAdd,bDec,bMul,bDiv,bCal;
  private TextField tf;
  private String s,op;
  private Calculator cal = new Calculator();
  private boolean ifOp;
  
  public CalculatorGUI(){
  f = new Frame("Calculator");
  p1 = new Panel();
  p2 = new Panel();
  
  b0 = new Button("0");
  b1 = new Button("1");
  b2 = new Button("2");
  b3 = new Button("3");
  b4 = new Button("4");
  b5 = new Button("5");
  b6 = new Button("6");
  b7 = new Button("7");
  b8 = new Button("8");
  b9 = new Button("9");
  bPoint = new Button(".");
  bAdd = new Button("+");
  bDec = new Button("-");
  bMul = new Button("*");
  bDiv = new Button("/");
  bCal = new Button("=");
  
  tf = new TextField(25);
  tf.setEditable(false);
  
  
  }
  
  public void launchFrame(){
  f.setSize(220,160);
  f.setResizable(false);
  f.addWindowListener(new myWindowListener());
  p1.setLayout(new FlowLayout(FlowLayout.CENTER));
  p1.add(tf);
  f.add(p1,BorderLayout.NORTH);
  p2.setLayout(new GridLayout(4,4));
  
  b0.addActionListener(new setLabelText_ActionListener());
  b1.addActionListener(new setLabelText_ActionListener());
  b2.addActionListener(new setLabelText_ActionListener());
  b3.addActionListener(new setLabelText_ActionListener());
  b4.addActionListener(new setLabelText_ActionListener());
  b5.addActionListener(new setLabelText_ActionListener());
  b6.addActionListener(new setLabelText_ActionListener());
  b7.addActionListener(new setLabelText_ActionListener());
  b8.addActionListener(new setLabelText_ActionListener());
  b9.addActionListener(new setLabelText_ActionListener());
  bPoint.addActionListener(new setLabelText_ActionListener());
  bAdd.addActionListener(new setOperator_ActionListener());
  bDec.addActionListener(new setOperator_ActionListener());
  bMul.addActionListener(new setOperator_ActionListener());
  bDiv.addActionListener(new setOperator_ActionListener());
  bCal.addActionListener(new setOperator_ActionListener());
  
  p2.add(b7);
  p2.add(b8);
  p2.add(b9);
  p2.add(bAdd);
  p2.add(b4);
  p2.add(b5);
  p2.add(b6);
  p2.add(bDec);
  p2.add(b1);
  p2.add(b2);
  p2.add(b3);
  p2.add(bMul);
  p2.add(b0);
  p2.add(bPoint);
  p2.add(bCal);
  p2.add(bDiv);
  f.add(p2,BorderLayout.SOUTH);
  f.setVisible(true);
  }
  
  public void setTextFieldText_Temp(){
  if (tf.getText().length()<15 && (tf.getText().indexOf(".")==-1  !s.equals("."))){
  tf.setText(tf.getText()+s);
  }else{
  tf.setText((tf.getText()+s).substring(0,15));
  }
  }
  public void setTextFieldText(){
  if(ifOp){
  ifOp = false;
  tf.setText("");
  setTextFieldText_Temp();
  }else{
  setTextFieldText_Temp();
  }
  }
  
  public static void main(String[] args){
  CalculatorGUI calculator = new CalculatorGUI();
  calculator.launchFrame();
  }
  
  class myWindowListener extends WindowAdapter{
  public void windowClosing(WindowEvent e){
  System.exit(0);
  }
  }
  
  class setLabelText_ActionListener implements ActionListener{
  public void actionPerformed(ActionEvent e){
  Button tempB = (Button)e.getSource();
  s = tempB.getLabel();
  setTextFieldText();
  }
  }
  
  class setOperator_ActionListener implements ActionListener{
  public void actionPerformed(ActionEvent e){
  Button tempB = (Button)e.getSource();
  op = tempB.getLabel();
  if(op.equals("+")){
  tf.setText(cal.opAdd(tf.getText()));
  ifOp = true;
  }else if(op.equals("-")){
  tf.setText(cal.opSubtract(tf.getText()));
  ifOp = true;
  }else if(op.equals("*")){
  tf.setText(cal.opMultiply(tf.getText()));
  ifOp = true;
  }else if(op.equals("/")){
  tf.setText(cal.opDivide(tf.getText()));
  ifOp = true;
  }else if(op.equals("=")){
  tf.setText(cal.opEquals(tf.getText()));
  ifOp = true;
  }
  }
  }
  }
  


  
精彩图集

赞助商链接