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. haproxy和keepalived的理解(转载)

    关于此两者,随便google一下都会有大量的文章,因此这里也不用介绍如何来进行安装和配置了.主要从一个整体方案的角度来描述什么要这样做,以及这样做所解决的问题. 所有的系统,都是先经历一个单台机器搞所 ...

  2. 【Python之路】特别篇--Python装饰器

    前情提要 1. 作用域 在python中,函数会创建一个新的作用域.python开发者可能会说函数有自己的命名空间,差不多一个意思.这意味着在函数内部碰到一个变量的时候函数会优先在自己的命名空间里面去 ...

  3. Shell登陆

    Shell登录信息 注:只对本地终端起作用,远程终端不起作用(也就是说这个文件对远程登录是无效的). 修改后: 输出: 注:这里在配置文件中添加\l之后会显示终端(这里为终端1),按住Alt+F2可以 ...

  4. 【原创】时隔十年,再度审视Performance Testing,性能测试,Load Runner,和企业级性能测试解决方案

    软件测试入行是2006年,最先学习的测试工具囊括了QTP,Test Director,Load Runner,Rational Robot,Rational Performance: 那时的操作系统是 ...

  5. .py文件打包成.exe文件

    # 使用pyinstaller模块 # pip install pyinstaller # 在命令行执行 pyinstaller -F xxx.py

  6. Codeforces 1167 E Range Deleting 双指针+思维

    题意 给一个数列\(a​\),定义\(f(l,r)​\)为删除\(a​\)中所有满足\(l<=a_i<=r​\)的数后的数列,问有多少对\((l,r)​\),使\(f(l,r)​\)是一个 ...

  7. Java并发之CAS的三大问题

    在Java并发包中有一些并发框架也使用了自旋CAS的方式实现了原子操作,比如:LinkedTransferQueue类的Xfer方法.CAS虽然很高效的解决了原子操作,但是CAS仍然存在三大问题:AB ...

  8. Gitlab启动、停止、重启(两种启动方式)

    因为Gitlab不是我部署的,是之前总监部署的,服务器突然更新系统了,Git服务器就没有自启··自启··自启······,自己操作启动没有成功,然后网上搜了一下都是这三种启动关闭重启的方式,可是我这里 ...

  9. java多线程编程详细总结

    一.多线程的优缺点 多线程的优点: 1)资源利用率更好2)程序设计在某些情况下更简单3)程序响应更快 多线程的代价: 1)设计更复杂虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复 ...

  10. Solr 5.2.1 部署并索引Mysql数据库

    1.Solr简介 Solr是一个高性能,采用Java5开发,SolrSolr基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查 ...