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. FastDFS为什么要结合Nginx?

    为什么选择Nginx Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟 ...

  2. 【agc004d】Teleporter

    题目大意 一棵树,改变一些边的父亲,使得深度不超过k. 解题思路 我一开始就想到了贪心,结果莫名其妙的把这种方法给否决了, 然后考虑优化树形dp,然后优化失败⊙﹏⊙ 贪心思路很简单,也很好感受出来,从 ...

  3. python学习_新闻联播文字版爬虫(V 1.0版)

    python3的爬虫练习,爬取的是新闻联播文字版网站 #!/usr/bin/env python # -*- coding: utf-8 -*- ''' __author__ = 'wyf349' _ ...

  4. 【Python之路】特别篇--Redis

    NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库 随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发 ...

  5. scanf的格式化字符串的匹配规则

    1.对于空白字符:空格.tab.回车等,scanf将忽略输入字符串的空白字符,直到下一个非空白字符,(并回放该非空白字符), 若该非空白字符与格式化字符串匹配,则读入 若该非空白字符与格式化字符串不匹 ...

  6. Node.js 安装与开发

    Node.js 简介 Node.js是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装.Node.js对一些 ...

  7. AcWing:146. 序列(小根堆 + 数学归纳 + 贪心)

    给定m个序列,每个包含n个非负整数. 现在我们可以从每个序列中选择一个数字以形成具有m个整数的序列. 很明显,我们一共可以得到nmnm个这种序列, 然后我们可以计算每个序列中的数字之和,并得到nmnm ...

  8. JavaScript数字计算精度丢失的问题和解决方案

    一.JS数字精度丢失的一些典型问题 1. 两个简单的浮点数相加:0.1 + 0.2 != 0.3 // true,下图是firebug的控制台截图: 看看java的计算结果:是不是让你很不能接受 再来 ...

  9. 已知源目录路径sourceFilePath,此目录下还有多级子目录和多个文本文件(*.txt)。尝试编写一个方法,将此目录下所有的文件拷贝至另一个目录targetFilePath,并其中的文本文件修改成SQL文件(*.SQL)。

    public void copyFile(String oldPath, String newPath) throws IOException { (new File(newPath)).mkdirs ...

  10. Linux查看和编辑文件

    例如,要想test.txt文件添加内容"I am a boy",test.txt在当前目录中 方法一:vi编辑法 打开终端,输入vi test.txt 回车,按a或i进入编辑模式, ...