在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Java语言基础 → java 实现 计算器简单功能

java 实现 计算器简单功能

Java语言基础

下载此实例
  • 开发语言:Java
  • 实例大小:7.66KB
  • 下载次数:49
  • 浏览次数:319
  • 发布时间:2019-03-26
  • 实例类别:Java语言基础
  • 发 布 人:kico
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 计算器 计算

实例介绍

【实例简介】

【实例截图】

from clipboard

【核心代码】


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MyComputer extends JFrame implements ActionListener
{
    JTextArea memoryArea=new JTextArea(" ",1,3);
    JTextArea process=new JTextArea(" ",1,20);
    JTextArea dispresult=new JTextArea("0.   ",1,20);
    Font font1=new Font("Vani",Font.BOLD,18 );
    Font font2=new Font("Arial Rounded MT  Bold",Font.PLAIN,10 );
    Font font3=new Font("Arial Rounded MT  Bold",Font.PLAIN,30 );
    Font font4=new Font("Vani",Font.PLAIN,15);

    JButton[]jbuttons=new JButton[32];

    double result=0,first=0,second=0;
    double memery=0;
    char firstsymbol='\0',secondsymbol='\0';
    boolean prev=true,repeat=true,dot=true;
    MyComputer()
    {
        super("Calculator");
        this.setTitle("计算器");
        try
        {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch(Exception e)
        {
            System.out.println(e);
        }
        JPanel resultField=new JPanel();
        resultField.setLayout(new GridLayout(3,1));

        JPanel buttonField=new JPanel();
        Container all=getContentPane();

        GridLayout grid1;
        grid1=new GridLayout(8,4,0,0);

        memoryArea.setFont(font3);
        dispresult.setFont(font3);
        process.setFont(font4);
        memoryArea.setEditable(false);
        process.setEditable(false);
        dispresult.setEditable(false);


        resultField.add(memoryArea);
        resultField.add(process);
        resultField.add(dispresult);

        all.add(resultField,"North");

        String[]buttonname={"MS","MC","MR","M ","1/x","x2","√","㏒","%","sin","cos","tan","CE","C","back","÷","7","8","9","×","4","5","6","-","1","2","3","+","±","0",".","="};

        buttonField.setLayout(grid1);
        //buttonField.setBackground(Color.LIGHT_GRAY);
        for(int i=0;i<4;i  )
        {

            for(int j=0;j<8;j  )
            {
                jbuttons[i*8 j]=new JButton(buttonname[i*8 j]);
                jbuttons[i*8 j].addActionListener(this);
                //jbuttons[i*8 j].setBackground(Color.red);
                buttonField.add(jbuttons[i*8 j]);

            }
        }
        for(int j=0;j<4;j  ){
            jbuttons[j].setFont(font2);
            //jbuttons[j].setBorderPainted(false);
            jbuttons[j].setBackground(new Color(250,250,250));
            //jbuttons[j].setPreferredSize(new Dimension(40,40));
            // jbuttons[j].setBorder(BorderFactory.createRaisedBevelBorder());
        }
        for(int j=4;j<16;j  ){
            jbuttons[j].setFont(font4);
            // jbuttons[j].setBorderPainted(false);


        }
        for(int j=16;j<32;j  ){
            jbuttons[j].setFont(font1);
            //jbuttons[j].setBorderPainted(false);

        }
        jbuttons[15].setFont(font4);
        jbuttons[19].setFont(font4);

        all.add(buttonField,"Center");
        setSize(422,405);
        setResizable(true);
        setVisible(true);
        //this.setResizable(false);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }


    public void pressNumber(String n)
    {
        process.setText(process.getText() n);
        if(prev)
        {
            dispresult.setText(n);
            prev=false;
        }
        else dispresult.append(n);
    }
    public boolean divide(double d)
    {
        if(d==0)
        {
            dispresult.setText("除数不能为0!");
            prev=true;
            repeat=true;
            firstsymbol='\0';
            secondsymbol='\0';
            return true;
        }
        return false;
    }
    public void actionPerformed(ActionEvent e)
    {
        Object source=e.getSource();
        if(source==jbuttons[12])
        {
            dispresult.setText("0.");
            dot=true;
            prev=true;
            repeat=true;
            return;
        }

        if(source==jbuttons[13])
        {
            process.setText(null);
            dispresult.setText("0.");
            firstsymbol='\0';
            secondsymbol='\0';
            prev=true;
            repeat=true;
            dot=true;
            return;
        }
        if(source==jbuttons[14]){
            String text=process.getText();
            int i=text.length();
            if(i>0){
                text=text.substring(0,i-1);
                if(text.length()==0){
                    dispresult.setText("0.");
                    process.setText("");
                    firstsymbol='\0';
                    secondsymbol='\0';
                    first=second=0;
                    prev=true;
                    repeat=true;
                    dot=true;
                }
                else{
                    dispresult.setText(text);
                    process.setText(text);
                }

            }
        }
        if(source==jbuttons[1])
        {
            memery=0;
            memoryArea.setText(" ");
            prev=true;
            repeat=false;
            dot=true;
            return;
        }
        if(source==jbuttons[29])
        {
            pressNumber("0");
            repeat=false;
            return;
        }
        if(source==jbuttons[24])
        {
            pressNumber("1");
            repeat=false;
            return;
        }
        if(source==jbuttons[25])
        {
            pressNumber("2");
            repeat=false;
            return;
        }
        if(source==jbuttons[4])
        {
            double temp=1/Double.parseDouble(dispresult.getText());
            dispresult.setText(String.valueOf(temp));
            prev=true;
            repeat=false;
            dot=true;
            return;
        }
        if(source==jbuttons[5])
        {
            double temp=Double.parseDouble(dispresult.getText())*Double.parseDouble(dispresult.getText());
            dispresult.setText(String.valueOf(temp));
            prev=true;
            repeat=false;
            dot=true;
            return;
        }
        if(source==jbuttons[6])
        {

            if(-Double.parseDouble(dispresult.getText())<0){
                double temp=Math.sqrt(Double.parseDouble(dispresult.getText()));
                dispresult.setText(String.valueOf(temp));
                prev=true;
                repeat=false;
                dot=true;
                return;
            }else{
                dispresult.setText("请输入有效数字");
            }

        }
        if(source==jbuttons[7])
        {

            if(-Double.parseDouble(dispresult.getText())<0){
                double temp=Math.log10(Double.parseDouble(dispresult.getText()));
                dispresult.setText(String.valueOf(temp));
                prev=true;
                repeat=false;
                dot=true;
                return;
            }else{
                dispresult.setText("请输入有效数字");
            }

        }
        if(source==jbuttons[8])
        {
            double temp=Double.parseDouble(dispresult.getText())/100;
            dispresult.setText(String.valueOf(temp));
            prev=true;
            repeat=false;
            dot=true;
            return;
        }
        if(source==jbuttons[9])
        {
            double temp=Math.sin(Double.parseDouble(dispresult.getText()));
            dispresult.setText(String.valueOf(temp));
            prev=true;
            repeat=false;
            dot=true;
            return;
        }
        if(source==jbuttons[10])
        {
            double temp=Math.cos(Double.parseDouble(dispresult.getText()));
            dispresult.setText(String.valueOf(temp));
            prev=true;
            repeat=false;
            dot=true;
            return;
        }
        if(source==jbuttons[2])
        {
            if(memoryArea.getText().equals(" M "))
                dispresult.setText(String.valueOf(memery));
            prev=true;
            repeat=false;
            dot=true;
            return;
        }
        if(source==jbuttons[26])
        {
            pressNumber("3");
            repeat=false;
            return;
        }
        if(source==jbuttons[20])
        {
            pressNumber("4");
            repeat=false;
            return;
        }
        if(source==jbuttons[21])
        {
            pressNumber("5");
            repeat=false;
            return;
        }
        if(source==jbuttons[11])
        {
            double temp=Math.tan(Double.parseDouble(dispresult.getText()));
            dispresult.setText(String.valueOf(temp));
            prev=true;
            repeat=false;
            dot=true;
            return;
        }
        if(source==jbuttons[0])
        {
            memery=Double.parseDouble(dispresult.getText());
            if(memery!=0)memoryArea.setText("M");
            prev=true;
            repeat=false;
            dot=true;
            return;
        }
        if(source==jbuttons[22])
        {
            pressNumber("6");
            repeat=false;
            return;
        }


        if(source==jbuttons[16])
        {   pressNumber("7");
            repeat=false;
            return;
        }
        if(source==jbuttons[17])
        {   pressNumber("8");
            repeat=false;
            return;}
        if(source==jbuttons[28])
        {   double temp=-Double.parseDouble(dispresult.getText());
            dispresult.setText(String.valueOf(temp));
            prev=true;
            repeat=false;
            dot=true;
            return;}
        if(source==jbuttons[3])
        {   memery =-Double.parseDouble(dispresult.getText());
            if(memery!=0) memoryArea.setText("M");
            prev=true;
            repeat=false;
            dot=true;
            return;}
        if(source==jbuttons[18])
        {   pressNumber("9");
            repeat=false;
            return;
        }
        if(source==jbuttons[30])
        {   if(dot){
            pressNumber(".");
            dot=false;
            repeat=false;
        }
            return;
        }
        if(source==jbuttons[31])
        {
            second=Double.parseDouble(dispresult.getText());
            dot=true;
            switch(secondsymbol)
            {
                case'*':
                    second*=first;
                    break;
                case'/':
                    if(divide(second))  return;
                    second=first/second;
            }//end of switch(secondsymbol)
            secondsymbol='\0';
            switch(firstsymbol)
            {
                case' ':
                    result =second;
                    break;
                case'-':
                    result-=second;
                    break;
                case'*':
                    result*=second;
                    dispresult.setText(String.valueOf(result));
                    break;
                case'/':
                    if(divide(second))   return;
                    result/=second;
            }//end of switch(firstsymbol)
            if(firstsymbol!='\0') dispresult.setText(String.valueOf(result));
            firstsymbol='\0';
            prev=true;
            repeat=false;
            return;
        }
        if(source==jbuttons[27])
        {
            process.setText(process.getText() " ");
            dot=true;
            if(repeat){
                firstsymbol=' ';
                return;

            }
            second=Double.parseDouble(dispresult.getText());
            switch(secondsymbol){
                case'*':
                    second*=first;
                    break;
                case'/':
                    if(divide(second))return;
                    second=first/second;
            }//end of switch(secondsymbol)
            secondsymbol='\0';
            switch(firstsymbol){
                case'\0':
                    result=second;
                    firstsymbol=' ';
                    break;
                case' ':
                    result =second;
                    dispresult.setText(String.valueOf(result));
                    break;
                case'-':
                    result-=second;
                    firstsymbol=' ';
                    dispresult.setText(String.valueOf(result));
                    break;
                case'*':
                    result*=second;
                    firstsymbol=' ';
                    dispresult.setText(String.valueOf(result));
                    break;
                case'/':
                    if(divide(second))return;
                    result/=second;
                    firstsymbol=' ';
                    dispresult.setText(String.valueOf(result));

            }//end of switch(firstsymbol)
            prev=true;
            repeat=true;
            return;
        }
        if(source==jbuttons[23])
        {
            process.setText(process.getText() "-");
            dot=true;
            if(repeat){
                firstsymbol='-';
                return;
            }
            second=Double.parseDouble(dispresult.getText());
            switch(secondsymbol){
                case'*':
                    second*=first;
                    break;
                case'/':
                    if(divide(second))return;
                    second=first/second;

            }
            secondsymbol='\0';
            switch(firstsymbol){
                case'\0':
                    result=second;
                    firstsymbol='-';
                    break;
                case' ':
                    result=second;
                    firstsymbol='-';
                    dispresult.setText(String.valueOf(result));
                    break;
                case'-':
                    result-=second;
                    dispresult.setText(String.valueOf(result));
                    break;
                case'*':
                    result*=second;
                    firstsymbol='-';
                    dispresult.setText(String.valueOf(result));
                    break;
                case'/':
                    if(divide(second))return;
                    result/=second;
                    firstsymbol='-';
                    dispresult.setText(String.valueOf(result));

            }
            prev=true;
            repeat=true;
            return;
        }
        if(source==jbuttons[19])
        {
            process.setText(process.getText() "*");
            dot=true;
            if(repeat){
                if(secondsymbol=='\0')firstsymbol='*';
                else secondsymbol='*';
                return;
            }
            second=Double.parseDouble(dispresult.getText());
            switch(secondsymbol){
                case'\0':
                    switch(firstsymbol){
                        case'\0':
                            firstsymbol='*';
                            result=second;
                            break;
                        case' ':
                        case'-':
                            first=second;
                            secondsymbol='*';
                            break;
                        case'*':
                            result*=second;
                            dispresult.setText(String.valueOf(result));
                            break;
                        case'/':
                            if(divide(second))return;
                            result/=second;
                            dispresult.setText(String.valueOf(result));
                            firstsymbol='*';
                    }
                    break;
                case'*':
                    first*=second;
                    dispresult.setText(String.valueOf(first));
                    break;
                case'/':
                    if(divide(second))return;
                    first/=second;
                    secondsymbol='*';
                    dispresult.setText(String.valueOf(first));
            }
            prev=true;
            repeat=true;
            return;
        }
        if(source==jbuttons[15])
        {
            process.setText(process.getText() "/");
            dot=true;
            if(repeat){
                if(secondsymbol=='\0')firstsymbol='/';
                else secondsymbol='/';
                return;
            }
            second=Double.parseDouble(dispresult.getText());
            switch(secondsymbol){
                case'\0':
                    switch(firstsymbol){
                        case'\0':
                            firstsymbol='/';
                            result=second;
                            break;
                        case' ':
                        case'-':
                            first=second;
                            secondsymbol='/';
                            break;
                        case'*':
                            result*=second;
                            firstsymbol='/';
                            dispresult.setText(String.valueOf(result));
                            break;
                        case'/':
                            if(divide(second))return;
                            result/=second;
                            dispresult.setText(String.valueOf(result));
                    }//end of switch(firstsymbol)
                    break;
                case'*':
                    first*=second;
                    secondsymbol='/';
                    dispresult.setText(String.valueOf(first));
                    break;
                case'/':
                    if(divide(second))return;
                    first/=second;
                    dispresult.setText(String.valueOf(first));
            }//end of switch(firstsymbol)
            prev=true;
            repeat=true;
            return;
        }
    }
    public static void main(String args[])
    {
        MyComputer mc=new MyComputer();
    }
}


标签: 计算器 计算

实例下载地址

java 实现 计算器简单功能

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警