找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1066|回复: 0
打印 上一主题 下一主题
收起左侧

计算器设计JAVA

[复制链接]
跳转到指定楼层
楼主
ID:306754 发表于 2018-4-12 17:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
package Calculator;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Calculator{
   public static void main(String[] args){
  new  Interface();
   }
}
class Interface extends JFrame {
   ArrayList<String> list = new ArrayList<String>();//用来存该运算中的数,以及运算结果,由文本编辑框得到
   ArrayList<String> lists = new ArrayList<String>();//用来存该运算中使用了的运算符,当点击运算符按钮存起集合lists
   int cout = 0;                                     //计数运算符,用来作为集合中各元素的下标
   JPanel inputpanel;                                //GUI组件的布局包括如下三个过程:1。创建面板,确定面板中的布局管理
   JTextField inputField;                            //                     2.给面板添加标签
   JButton button;                                   //                     3.为面板添加按钮,文本编辑框等组件
   JButton btn1,btn2,btn3,btn4;
   JButton btn5,btn6,btn7,btn8;
   JButton btn9,btn10,btn11,btn12;
   JButton btn13,btn14,btn15,btn16;
   public Interface(){
inputpanel = new JPanel();
inputField = new JTextField(9);               //文本框长度为9            
button = new JButton("清零");
inputpanel.add(inputField);
inputpanel.add(button);
this.add(inputpanel);  
JPanel panel = new JPanel(new GridLayout(4,4));//设置panel面板的布局管理为GridLayout管理器,为一个4*4的网格
btn1 = new JButton("7");
btn2 = new JButton("8");
btn3 = new JButton("9");
btn4 = new JButton("+");
btn5 = new JButton("4");
btn6 = new JButton("5");
btn7 = new JButton("6");
btn8 = new JButton("-");
btn9 = new JButton("1");
btn10 = new JButton("2");
btn11 = new JButton("3");
btn12 = new JButton("×");
btn13 = new JButton("0");
btn14 = new JButton(".");
btn15 = new JButton("=");
btn16 = new JButton("÷");  //定义Button按钮
panel.add(btn1);
panel.add(btn2);
panel.add(btn3);
panel.add(btn4);
panel.add(btn5);
      panel.add(btn6);
panel.add(btn7);
panel.add(btn8);
      panel.add(btn9);
      panel.add(btn10);
      panel.add(btn11);
      panel.add(btn12);
      panel.add(btn13);
panel.add(btn14);
panel.add(btn15);
panel.add(btn16);            //将按钮添加进panel面板
btn1.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
    inputField.setText(inputField.getText()+"7");
}
});                        
btn2.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"8");
}
});
btn3.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"9");
}
});
btn5.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
    inputField.setText(inputField.getText()+"4");
}
});
btn6.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"5" );
}
});
btn7.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"6");
}
});
btn9.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
   inputField.setText(inputField.getText()+"1");
}
});
btn10.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"2");
}
});
btn11.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"3");
}
});

btn13.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"0");
}
});
btn14.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+".");
}
});                    //为数字按钮和小数点按钮添加点击事件,点击之后按钮所代表数字显示在文本编辑框
btn4.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
list.add(inputField.getText()); //运算的实现,获取在文本编辑框上显示的文本,并存入集合list中
lists.add("+");     //获取运算符,存入lists中
cout++;             //标记运算符的个数,也就是要进行运算的次数
inputField.setText("");      
//将编辑框置为空的,方便下一个数据的额输入
}
});            
btn8.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
list.add(inputField.getText());
lists.add("-");
cout++;
inputField.setText("");  
}
     });
     btn12.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
list.add(inputField.getText());
lists.add("×");
cout++;
inputField.setText("");  
}
     });
btn16.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
list.add(inputField.getText());
lists.add("÷");
cout++;
inputField.setText("");  
}
});
btn15.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
list.add(inputField.getText());           //点击按钮=时,把此事编辑框显示的数据存入list
inputField.setText(Operator(lists.get(cout-1)));//把运算得到的结果存入list,作为下一个运算符运算的前一个数
}
});
button.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){

inputField.setText("");
   list.clear();
   //将list和lists集合保存的上一次运算的各要素清空
lists.clear();

cout = 0;              //把cout的值还原
}
});
this.add(panel);
     this.setTitle("计算器");
     this.setSize(185,205);
     this.setLayout(new FlowLayout());
     this.setVisible(true);                 //GUI窗体
  }
public String  Operator(String str){
Double result = 0.0 ;

Double a = Double.parseDouble(list.get(2*cout-2));//将list中记录的第一个运算符前一个数据转化为Double类型
Double b = Double.parseDouble(list.get(2*cout-1));//将list中记录的第一个运算符后一个数据转化为Double类型
switch(str){                                      //cout表示第几个字符
case "+" : result = a + b;
          break;
case "-" : result = a - b;
               break;
case "×" : result = a * b;
               break;
case "÷" : result = a / b;
               break;
}
String res = String.valueOf(result);
return res; //通过switch语句得到各种运算之后的返回值并转化为String类型
}
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表