JAVA计算器

用JAVA来实现四则运算的计算器。。。

实现这个计算器的功能对我来说也算是个挑战,因为之前从来都没有自己独立的去实现某种东西,也没有怎么样的去做好一个题目,但是这回学JAVA,我希望我是认真的。
最开始实现这个的思路是在flowLayout面板里面一个一个按键的添加监听类,然后通过JFTxetField文本框类来获取输入,最后实现功能。但是这种做法让我觉得很慢,很愚蠢,所以在经过了自己的思考之后是想着在实现按键的时候添加监听类,通过循环的方式来实现对监听类的初始化。
在百度了类似做法的人的代码的时候,我也照搬照套的实现了自己的计算器的功能。

  1. 实现这个功能要有序,通过构建一个calcular类来实现计算器的面板和功能。
  2. 实现面板的时候,要明确的分析清楚面板里面应该有什么样的东西,就比如说获取输入的文本框,getText方法是获得数字,setTxet方法是显示数字,这两个方法在获得数字和运算符号的时候要有目的性的去使用。
    文本框是利用BorderLayout布局放置在整个框架的正北方,然后添加一个Panel,Panel用的是GridLayout(网块化的布局方式)来实现按钮,最后在Panel里面利用for循环来添加按钮,再在按钮里面添加监听器,最后再去实现功能
  3. 实现功能的时候,要想着,实现这个计算器程序需要什么,输入1(并存储),运算符号(输入但是不显示),输入2(运算之后输出结果);这就是3个变量需要声明
  4. 在实现整个功能的时候,有一个地方要注意,就是最开始监测按数字按钮的时候,你按了,然后最开始文本框是有一个初始值0的,你按了只后就会去不掉0
    这里是看了别人的代码实现的功能
    就是在监听类的实现里面,你要判断鼠标点击按钮,你先点击了,文本框就获得值,但是如果你继续点击的话呢?这个实现利用了boolean变量和if/else if语句来实现的,先点击了,文本框的默认是boolean类型是错误的,只能获得你点击了的数,然后把boolean类型改为正确,再去实现数字的累积的功能

描述说完了,按钮写的挺多的,但是并没有完全去实现完`

calculator类

import javax.swing.*;
import javax.swing.text.JTextComponent;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class calculator extends JFrame implements ActionListener{
    private String num1;           //储存第一个要输入的数字
    private String num2;           //储存可能输出的第二个数字
    private String option;        //储存计算器中的运算符号之类的
    private LayoutManager gridbaglayout;   //panel中的布局类型
    private JTextField jtf=new JTextField("0");   //初始化一个文本框来进行以后的操作
    private boolean flag=false;                    //定义一个boolean类型的量来判断以后的文本框

    public  calculator (){         //在calculator这个类里面构造函数来实现面板功能
        JFrame jf=new JFrame("计算器");
        jf.setSize(300,300);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel jp=new JPanel();        //初始化一个面板
        jp.setLayout(new GridLayout(5,4));

        String dcKey[] = { "CE","C", "←", "÷", "7", "8", "9","×", "4", "5", "6", "-",  
                "1","2", "3", "+", "NULL", "0","null", "="};  

        for(int i=0;i<dcKey.length;i++){
            JButton b=new JButton(dcKey[i]);
            jp.add(b);
            b.addActionListener(this);
        }
        jf.add(jtf,BorderLayout.NORTH);      //在BorderLayout布局中把文本框放在北方
        jf.add(jp, BorderLayout.CENTER);    //在Borderlayout布局中把面板jp 居中

        jf.setVisible(true);

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        String get1=e.getActionCommand();
        System.out.print(get1);
        if("0123456789".indexOf(get1)!=-1){  //判断这一串数字中是否有一个能在indexof这个函数里面找到   没找到就返回-1 所以这个就是在这个字符串里面找到了
            if(flag){
                String input=jtf.getText();
                jtf.setText(input+get1);
            }else{
                jtf.setText(get1);
;               flag=true;
            }
        }
        if("+-×÷".indexOf(get1)!=-1){
            option=jtf.getText();   //num1是用作来储存文本框里面被点击了的运算符号   option储存已经点击完了的数字
            num1=get1;              
            flag=false;
        }
        if("=".equals(get1)){       //执行计算的操作
            num2=jtf.getText();      //第二次点击的数字
            double d1=Double.parseDouble(option );
            double d2=Double.parseDouble(num2);
            if("+".equals(num1)){
                d1=d1+d2;
            }else if("×".equals(num1)){
                d1=d1*d2;
              }else if("÷".equals(num1)){
               d1=d1/d2;
              }else if("-".equals(num1)){
                  d1=d1-d2;
              }
            num2=d1+"";
            jtf.setText(num2);
            flag=false;
        }
}
    }`

功能检测

    public static void main(String[] args) {  
        new calculator();
    }  
} 
  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值