java编写的简易计算器

主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码


1.Index.java

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Index extends JFrame implements ActionListener {

  private int choice = 0;
  private double a = 0;
  private double b = 0;
  private double c = 0;
  private boolean next = true;
  
  public JButton one = new JButton("1");
  public JButton two = new JButton("2");
  public JButton three = new JButton("3");
  public JButton four = new JButton("4");
  public JButton five = new JButton("5");
  public JButton six = new JButton("6");
  public JButton seven = new JButton("7");
  public JButton eight = new JButton("8");
  public JButton nine = new JButton("9");
  public JButton zero = new JButton("0");
  public JButton point = new JButton(".");
  public JButton add = new JButton("+");
  public JButton subtract = new JButton("-");
  public JButton mult = new JButton("*");
  public JButton divi = new JButton("/");
  public JButton equal = new JButton("=");
  public JButton clean = new JButton("C");
  public JTextField message = new JTextField();
  public JTextField result = new JTextField();
  public JFrame jf = new JFrame("计算器");
  public Container con = jf.getContentPane();
  
  public Font font = new Font("楷体", 0, 15);
  public Font font1 = new Font("楷体", 0, 20);
  
  Index() {
    jf.setBounds(90, 90, 250, 220);
    jf.setResizable(false);
    jf.setVisible(true);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.setResizable(false);
    jf.setLocationRelativeTo(null);
    message.setBounds(5, 5, 185, 15);
    message.setBorder(null);
    message.setBackground(Color.white);
    message.setFont(font);
    message.setEditable(false);
    result.setBounds(5, 20, 185, 25);
    result.setBorder(null);
    result.setBackground(Color.white);
    result.setFont(font1);
    result.setEditable(false);//设置为不可写,即只读
    
    clean.setBounds(195, 5, 45, 40);
    clean.setFont(font);
    clean.addActionListener(this);
    one.setBounds(5,50,50,30);
    one.setFont(font);
    one.addActionListener(this);
    two.setBounds(60,50,50,30);
    two.setFont(font);
    two.addActionListener(this);
    three.setBounds(120,50,50,30);
    three.setFont(font);
    three.addActionListener(this);
    add.setBounds(180, 50, 60, 30);
    add.setFont(font);
    add.addActionListener(this);
    
    four.setBounds(5,85,50,30);
    four.setFont(font);
    four.addActionListener(this);
    five.setBounds(60,85,50,30);
    five.setFont(font);
    five.addActionListener(this);
    six.setBounds(120,85,50,30);
    six.setFont(font);
    six.addActionListener(this);
    subtract.setBounds(180, 85, 60, 30);
    subtract.setFont(font);
    subtract.addActionListener(this);

    seven.setBounds(5,120,50,30);
    seven.setFont(font);
    seven.addActionListener(this);
    eight.setBounds(60,120,50,30);
    eight.setFont(font);
    eight.addActionListener(this);
    nine.setBounds(120,120,50,30);
    nine.setFont(font);
    nine.addActionListener(this);
    mult.setBounds(180, 120, 60, 30);
    mult.setFont(font);
    mult.addActionListener(this);
    
    point.setBounds(5,155,50,30);
    point.setFont(font);
    point.addActionListener(this);
    zero.setBounds(60,155,50,30);
    zero.setFont(font);
    zero.addActionListener(this);
    equal.setBounds(120,155,50,30);
    equal.setFont(font);
    equal.addActionListener(this);
    divi.setBounds(180, 155, 60, 30);
    divi.setFont(font);
    divi.addActionListener(this);
    
    con.setLayout(null);//不用默认的布局方式(布局管理器)
    con.setVisible(true);
    con.add(message);
    con.add(result);
    con.add(clean);
    con.add(one);
    con.add(two);
    con.add(three);
    con.add(add);
    con.add(four);
    con.add(five);
    con.add(six);
    con.add(subtract);
    con.add(seven);
    con.add(eight);
    con.add(nine);
    con.add(mult);
    con.add(point);
    con.add(zero);
    con.add(equal);
    con.add(divi);
  }
  
  private static void hint(String str) {
    JOptionPane.showMessageDialog(null, str, "提示", JOptionPane.INFORMATION_MESSAGE);
  }
  
  private void clean(String str) {
    this.message.setText(str);
    this.result.setText("");
  }
  
  public void actionPerformed(ActionEvent e) {
    if(e.getSource() == this.one) {
      if(next) {
        clean("");
        this.next = false;
      }
      this.result.setText(result.getText()+"1");
    }
    else if(e.getSource() == this.two) {
      if(next) {
        clean("");
        this.next = false;
      }
      this.result.setText(result.getText()+"2");
    }
    else if(e.getSource() == this.three) {
      if(next) {
        clean("");
        this.next = false;
      }
      this.result.setText(result.getText()+"3");
    }
    else if(e.getSource() == this.four) {
      if(next) {
        clean("");
        this.next = false;
      }
      this.result.setText(result.getText()+"4");
    }
    else if(e.getSource() == this.five) {
      if(next) {
        clean("");
        this.next = false;
      }
      this.result.setText(result.getText()+"5");
    }
    else if(e.getSource() == this.six) {
      if(next) {
        clean("");
        this.next = false;
      }
      this.result.setText(result.getText()+"6");
    }
    else if(e.getSource() == this.seven) {
      if(next) {
        clean("");
        this.next = false;
      }
      this.result.setText(result.getText()+"7");
    }
    else if(e.getSource() == this.eight) {
      if(next) {
        clean("");
        this.next = false;
      }
      this.result.setText(result.getText()+"8");
    }
    else if(e.getSource() == this.nine) {
      if(next) {
        clean("");
        this.next = false;
      }
      this.result.setText(result.getText()+"9");
    }
    else if(e.getSource() == this.zero) {
      if(next) {
        clean("");
        this.next = false;
      }
      this.result.setText(result.getText()+"0");
    }
    else if(e.getSource() == this.point) {
      this.result.setText(result.getText()+".");
     
      this.next = false;//
    }
    else if(e.getSource() == this.add) {//加
      String number = this.result.getText();
      String str = this.message.getText() + this.result.getText() + "+";
      if(number.equals("")){
        hint("请输入数据!");
        return;
      }
      a = Double.parseDouble(number);
      this.choice = 1;
      this.message.setText(str);
      this.result.setText("");
      this.next = false;
    }
    else if(e.getSource() == this.subtract) {//减
      String number = this.result.getText();
      String str = this.message.getText() + this.result.getText() + "-";
      if(number.equals("")){
        this.result.setText("-");
      }
      else{
        a = Double.parseDouble(number);
        this.choice = 2;
        this.message.setText(str);
        this.result.setText("");
      }
      this.next = false;
    }
    else if(e.getSource() == this.mult) {//乘
      String number = this.result.getText();
      String str = this.message.getText() + this.result.getText() + "*"
          + "";
      if(number.equals("")){
        hint("请输入数据!");
        return;
      }
      a = Double.parseDouble(number);
      this.choice = 3;
      this.message.setText(str);
      this.result.setText("");
      this.next = false;
    }
    else if(e.getSource() == this.divi) {//除
      String number = this.result.getText();
      String str = 
          this.message.getText() + this.result.getText() + "/";
      if(number.equals("")){
        hint("请输入数据!");
        return;
      }
      a = Double.parseDouble(number);
      this.choice = 4;
      this.message.setText(str);
      this.result.setText("");
      this.next = false;
    }
    else if(e.getSource() == this.equal){
      String number = this.result.getText();
      if(number.equals("")){
        hint("请输入数据!");
        return;
      }
      b = Double.parseDouble(number);
      if(b == 0 && choice == 4) {
        hint("除数不能为0!");
        clean("");
        return;
      }
      String str = this.message.getText() + this.result.getText() + "=";
      this.message.setText(str);
      
      c = Counter.compute(a,b,choice);
      String re = new String();
      re += c;
      int L = re.length();
      if(re.charAt(L-2) == '.' && re.charAt(L-1) == '0') 
        re = re.substring(0, L-2);
      this.result.setText(re);
      this.next = true;
    }
    else if(e.getSource() == this.clean) {
      clean("");
    }
  }
  
}

2.Counter.java

public class Counter {

  public static void main(String[] args) {
    new Index();
  }
  
  public static double compute(double a, double b, int choice) {
    double c = 0;
    switch(choice) {
    case 1: c = a + b;
      break;
    case 2: c = a - b;
      break;
    case 3: c = a * b;
      break;
    case 4: c = a / b;
      break;
    }
//System.out.println(c);
    return c;
  }
  
}


  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值