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. 获取BGR颜色的HSV值

    import cv2import numpy as np green = np.uint8([[[152, 245, 255]]]) # 输入待转换颜色的BGR值hsv_green = cv2.cvt ...

  2. vue 剪切图片上传头像,使用 cropperjs 实现

    我使用的是vue,移动端的项目. 官网地址:cropperjs GitHub地址:https://github.com/fengyuanchen/cropperjs/blob/master/READM ...

  3. Linux命令(Ubuntu)

    VMware 打开命令模式快捷键:  Ctrl + Alt + T VMware 里面Ubuntu不能全屏, 本来想着习惯就好, 知道今天看一些信息不能全部显示, 最终不能忍了. 上网找了很多方法 主 ...

  4. wind本地MySQL数据到hive的指定路径,Could not create file

    一:使用:kettle:wind本地MySQL数据到hive的指定路径二:问题:没有root写权限网上说的什么少jar包,我这里不存在这种情况,因为我自己是导入jar包的:mysql-connecto ...

  5. word粘贴图片到ekitor

    最近公司做项目需要实现一个功能,在网页富文本编辑器中实现粘贴Word图文的功能. 我们在网站中使用的Web编辑器比较多,都是根据用户需求来选择的.目前还没有固定哪一个编辑器 有时候用的是UEditor ...

  6. CTS添加新测试用例步骤

    一.CTS添加新测试用例: 前言: google源代码中的cts测试用例集目录为:source_android4.2/cts/tests/tests/ (source_android4.2表示andr ...

  7. codevs3269 混合背包 x

    3269 混合背包  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond   题目描述 Description 背包体积为V ,给出N个物品,每个物品占用体积为 ...

  8. rename、remove

    /*** remove.c ***/ #include<stdio.h> int main() { remove("./b.txt"); } 运行结果: ubuntu1 ...

  9. laravel insert 、save、update、create区别(总结二)

    1.insert:插入数据时,需要维护 created_at 和 updated_at字段, 2.save:无论插入或者更新,会自动维护,无需手动操作 //插入: public function st ...

  10. vue.js 三种方式安装

    Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易于上手 ...