java初学者编译简单的计算机

package com.yj.test;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class CaculateFrame extends JFrame{

    private JPanel content,panel;
    private JTextField txtInput;
     //记录运算符操作
    private String operation;
    private double v1,v2,result;
    // 一次计算的开关
    private boolean flag = false; 

    public CaculateFrame() {
        this.setTitle("计算器");
        //设置位置和大小
        this.setBounds(300, 200, 300, 300);

        txtInput = new JTextField(20);
        txtInput.setHorizontalAlignment(JTextField.RIGHT);
        Font f = new Font("微软雅黑",Font.BOLD,20);
        txtInput.setFont(f);

        content = new JPanel();
        content.setLayout(new BorderLayout());

        content.add(txtInput,BorderLayout.NORTH);

        panel = new JPanel();
        panel.setLayout(new GridLayout(4,4,5,5));

        panel.add(useButton("7"));
        panel.add(useButton("8"));
        panel.add(useButton("9"));
        panel.add(useButton("/"));

        panel.add(useButton("4"));
        panel.add(useButton("5"));
        panel.add(useButton("6"));
        panel.add(useButton("*"));

        panel.add(useButton("1"));
        panel.add(useButton("2"));
        panel.add(useButton("3"));
        panel.add(useButton("-"));

        panel.add(useButton("0"));
        panel.add(useButton("."));
        panel.add(useButton("="));
        panel.add(useButton("+"));

        content.add(panel,BorderLayout.CENTER);
        this.add(content);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    private JButton useButton(String key) {
        JButton btn = new JButton(key);
        btn.addActionListener(new ActionListener() {
            //事件是由哪个控件发出的,通通都记录在ActionEvent这个对象中
            public void actionPerformed(ActionEvent e) {
                //根据按钮上面不同的值,应该做不同的操作
                myAction(key);
            }
        });
        return btn;
    }

    private void myAction(String key) {
        if(flag) {
            txtInput.setText("");
            flag = false;
        }
        switch(key) {
        case "0":
        case "1":
        case "2":
        case "3":
        case "4":
        case "5":
        case "6":
        case "7":
        case "8":
        case "9":
        case ".":
            if(txtInput.getText() == null || txtInput.getText().equals("")) {
                if(key.equals("0")) {
                    return;
                }
                if(key.equals(".")) {
                    txtInput.setText("0.");
                    return;
                }
            }if(txtInput.getText().indexOf(".") != -1 && key.equals(".")) {
                return;
            }
            txtInput.setText(txtInput.getText() + key);
            break;
        case "+":
            this.operation = "+";

            if(txtInput.getText() == null || txtInput.getText().equals("")) {
                v1 = 0;
            }else {
                //转换为double类型
                v1 = Double.parseDouble(txtInput.getText());
            }
            txtInput.setText("");
            break;
        case "-":
            this.operation = "-";
            if(txtInput.getText() == null || txtInput.getText().equals("")) {
                v1 = 0;
            }else {
                //转换为double类型
                v1 = Double.parseDouble(txtInput.getText());
            }
            txtInput.setText("");
            break;
        case "*":
            this.operation = "*";
            if(txtInput.getText() == null || txtInput.getText().equals("")) {
                v1 = 0;
            }else {
                //转换为double类型
                v1 = Double.parseDouble(txtInput.getText());
            }
            txtInput.setText("");
            break;
        case "/":
            this.operation = "/";
            if(txtInput.getText() == null || txtInput.getText().equals("")) {
                v1 = 0;
            }else {
                //转换为double类型
                v1 = Double.parseDouble(txtInput.getText());
            }
            txtInput.setText("");
            break;
        case "=":
            if(txtInput.getText() == null || txtInput.getText().equals("")) {
                v2 = 0;
            }else {
                //转换为double类型
                v2 = Double.parseDouble(txtInput.getText());
            }
            switch(this.operation) {
                case "+":
                    result = v1 + v2;
                    break;
                case "-":
                    result = v1 - v2;
                    break;
                case "*":
                    result = v1 * v2;
                    break;
                case "/":
                    if (v2 == 0) {
                        return;
                    }
                    result = v1 / v2;
                    break;
            }
            txtInput.setText(String.valueOf(result));
            v1 = 0;
            v2 = 0;
            result = 0;
            flag = true;
        }
    }
}

计算机测试显示窗口 :

package com.yj.test;

public class Test {

    public static void main(String[] args) {
        CaculateFrame cf = new CaculateFrame();
        cf.setVisible(true);
    }

}

原文地址:https://www.cnblogs.com/suger-4/p/12052050.html

时间: 2025-01-22 00:40:32

java初学者编译简单的计算机的相关文章

Java初学者:内建函数计算简单的数学表达式

这个应该在之前写的,忘记了,补上 这次我们说一下如何用java计算数学表达式的值,比如,我们要计算sin(pi/3) + cos(pi/6) + 5.6^3,怎么计算呢?这里我们需要用到java的math的内建函数,所谓内建函数,就是java已经给你的方法,你用就好了,有时候你需要自己导入包,但math却不用,java会自动导入,不用你手动导入.下面我们来看一下这个例子: 编译运行通过,没问题,这个很简单. Math.PI, 就是派了,Math.pow(z, 3),就是计算z的立方,Math.s

一个牛人给java初学者的建议

给初学者之一:浅谈java及应用学java 不知不觉也已经三年了 从不知java为何物到现在一个小小的j2ee项目经理虽说不上此道高手,大概也算有点斤两了吧每次上网,泡bbs逛论坛,没少去java相关的版面总体感觉初学者多,高手少,精通的更少由于我国高等教育制度教材陈旧,加上java自身发展不过十年左右的时间还有一个很重要的原因就是java这门语言更适合商业应用所以高校里大部分博士老师们对此语言的了解甚至不比本科生多在这种环境下,很多人对java感到茫然,不知所措,不懂java能做什么即便知道了

Java中的简单浮点数类型float和double不能够进行精确运算

在java中,简单的浮点类型float和double是不能够进行运算.我们先看下面的两个程序代码: 代码一: import java.util.Scanner; class Circle { double radius; static final double PI=3.14; public Circle(){this.radius=0;} public Circle(double r){this.radius=r;} public double getArea(){return PI*this

一 java的编译与运行

--要知其然知其所以然 1.当我们习惯于各种IDE工具编写java程序代码时,是否知道它们为我们做了什么!首先用最简单的文本工具编写源代码(假如已经安装jdk,并配置好环境变量). 例: 1.1 编辑源代码 在c盘新建目录 work ,并新建文本文件 HelloWorld.java 如下图 HelloWorld.java的内容(源码): public class HelloWorld { public static void main(String[] args) { System.out.pr

Java初学者

一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍.这一部分的内容,同样适用于一些希望转行到Java的同学. 在大家看之前,我要先声明两点.1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和J

一位资深程序员大牛给予Java初学者的学习建议(转)

一位资深程序员大牛给予Java初学者的学习建议 这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议? 今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍.这一部分的内容, 同样适用于一些希望转行到Java的同学. 在大家看之前,我要先声明两点. 1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线, 非Java Web和Java后

Java初学者:初学者的介绍

作为一个Java的初学者,或者说,如果你从来没有学过任何计算机语言,当然也没有或者只是听过Java,那么,简单了解一下JAVA还是有必要的,那么,Java到底是什么呢? 毫无疑问,Java是一门优秀的计算机语言,它的发展历史和实际应用你几乎可以在任何一本书或者相关网站上找到.但是以我的经验,如果你是初学者,读完那些神乎其神的介绍以后,除了觉得迷糊,莫名其妙的产生一种敬仰之情之外,你还是不知道Java是什么. 这里,我不想复制那些书或者网站上的介绍,我只想以初学者的感觉告诉你一下,Java与其他的

转载:一位资深程序员大牛给予Java初学者的学习路线建议

一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍.这一部分的内容,同样适用于一些希望转行到Java的同学. 在大家看之前,我要先声明两点.1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和J

Eclipse4.4 安装java反编译插件Eclipse Class Decompiler

一.在线安装方式: Eclipse Class Decompiler整合了目前最好的2个Java反编译工具Jad和JD-Core,并且和Eclipse Class Viewer无缝集成,能够很方便的使用本插件查看类库源码,以及采用本插件进行Debug调试.Eclipse Class Decompiler插件更新站点: http://feeling.sourceforge.net/update,然后直接使用Eclipse进行更新,支持Eclipse 3.x, 4.x,不依赖任何其他插件,直接勾选更