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);
} }

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

  1. Java初学者作业——简单程序根据用户输入的会员类型以及购物金额,判断是否能够享受活动优惠

    返回本章节 返回作业目录 需求说明: 超市周年庆举行购物满减活动,编写Java程序,根据用户输入的会员类型以及购物金额,判断是否能够享受活动优惠,会员类型的输入不限制大小写.具体获取规则:若为VIP会 ...

  2. Java初学者 编译能通过,但显示有错误,并且不会自动弹出方法的解决方法。

    因为使用了 @Data注解,关于注解的作用尚未深入理解,此处先做一个记录. 解决方法是,添加lombok插件

  3. JAVA 文件编译执行与虚拟机(JVM)简单介绍

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo3 java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 ...

  4. 利用 Docker 构建一个简单的 java 开发编译环境

    目前 Java 语言的版本很多,除了常用的 Java 8,有一些遗留项目可能使用了 Java 7,也可能有一些比较新的的项目使用了 Java 10 以上的版本.如果想切换自己本地的 Java 开发环境 ...

  5. 一个牛人给Java初学者的建议

    学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:618528494  我们一起学Java! 给初学者之一:浅谈Java及应用学java ...

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

    java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...

  7. 对Java初学者的忠告

    1) 适合自己的图书才是最好的,最好的书并不一定适合你,看自己的情况. 如果你是一个Java初学者一上手就捧一本Thinking in Java在手里,我想你的日子是不会好过的,那样的书给有一定基础的 ...

  8. java初学者必看经典

    配置java环境变量: JAVA_HOME:配置JDK的目录 CLASSPATH:指定到哪里去找运行时需要用到的类代码(字节码) PATH:指定可执行程序的位置 LINUX系统(在" .ba ...

  9. 一位资深程序员给予Java初学者的学习路线建议

    一位资深程序员给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干 ...

随机推荐

  1. C# 学习笔记第一天

    1.  2000年开发出C#,2002年传入中国 2.   .NET  两部分 (1). .NET 平台               好比是厨房 (2)  .netframework 框架       ...

  2. C语言构建小型Web服务器

    #include <stdio.h> #include <sys/socket.h> #include <stdlib.h> #include <string ...

  3. Maven - Maven Project与Maven Module区别和联系

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/J080624/article/detai ...

  4. react-native 各种插件

    https://www.cnblogs.com/skylor/p/5783824.html

  5. JQuery动画之淡入淡出动画

    1. 淡入动画 1.1 不带参数的淡入动画 格式: $(selector).fadeIn(); 示例代码: <!doctype html> <html lang="en&q ...

  6. ESPCMS的CSRF添加管理员账号

    ESPCMS的CSRF添加管理员账号 前言 这里开始的思路是先注入进去 然后getshell 但是不关CSRF什么事 换思路 看了一下群消息  大哥发了一个视频  后台名称admin  admin12 ...

  7. python进程间的通信

    from multiprocessing import Queue, Process import time, random # 要写入的数据 list1 = ["java", & ...

  8. Java工程师成神之路(2018年最新版)

    一.基础篇 JVM JVM内存结构 堆.栈.方法区.直接内存.堆和栈区别 Java内存模型 内存可见性.重排序.顺序一致性.volatile.锁.final 垃圾回收 内存分配策略.垃圾收集器(G1) ...

  9. springboot 热部署替代方式

    因为使用的 idea springboot2.2.0 snapshot版本, 常规的devtools方法实在是实现不了热部署,所以采用手动update的方法更新,测试可以成功更新resource里面的 ...

  10. SRS之RTMP handshake

    1. SrsRtmpServer::handshake 位于 srs_rtmp_stack.cpp. int SrsRtmpServer::handshake() { int ret = ERROR_ ...