1. package com.yj.test;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Font;
  5. import java.awt.GridLayout;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8.  
  9. import javax.swing.JButton;
  10. import javax.swing.JFrame;
  11. import javax.swing.JPanel;
  12. import javax.swing.JTextField;
  13.  
  14. public class CaculateFrame extends JFrame{
  15.  
  16. private JPanel content,panel;
  17. private JTextField txtInput;
  18. //记录运算符操作
  19. private String operation;
  20. private double v1,v2,result;
  21. // 一次计算的开关
  22. private boolean flag = false;
  23.  
  24. public CaculateFrame() {
  25. this.setTitle("计算器");
  26. //设置位置和大小
  27. this.setBounds(300, 200, 300, 300);
  28.  
  29. txtInput = new JTextField(20);
  30. txtInput.setHorizontalAlignment(JTextField.RIGHT);
  31. Font f = new Font("微软雅黑",Font.BOLD,20);
  32. txtInput.setFont(f);
  33.  
  34. content = new JPanel();
  35. content.setLayout(new BorderLayout());
  36.  
  37. content.add(txtInput,BorderLayout.NORTH);
  38.  
  39. panel = new JPanel();
  40. panel.setLayout(new GridLayout(4,4,5,5));
  41.  
  42. panel.add(useButton("7"));
  43. panel.add(useButton("8"));
  44. panel.add(useButton("9"));
  45. panel.add(useButton("/"));
  46.  
  47. panel.add(useButton("4"));
  48. panel.add(useButton("5"));
  49. panel.add(useButton("6"));
  50. panel.add(useButton("*"));
  51.  
  52. panel.add(useButton("1"));
  53. panel.add(useButton("2"));
  54. panel.add(useButton("3"));
  55. panel.add(useButton("-"));
  56.  
  57. panel.add(useButton("0"));
  58. panel.add(useButton("."));
  59. panel.add(useButton("="));
  60. panel.add(useButton("+"));
  61.  
  62. content.add(panel,BorderLayout.CENTER);
  63. this.add(content);
  64. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  65. }
  66. private JButton useButton(String key) {
  67. JButton btn = new JButton(key);
  68. btn.addActionListener(new ActionListener() {
  69. //事件是由哪个控件发出的,通通都记录在ActionEvent这个对象中
  70. public void actionPerformed(ActionEvent e) {
  71. //根据按钮上面不同的值,应该做不同的操作
  72. myAction(key);
  73. }
  74. });
  75. return btn;
  76. }
  77.  
  78. private void myAction(String key) {
  79. if(flag) {
  80. txtInput.setText("");
  81. flag = false;
  82. }
  83. switch(key) {
  84. case "0":
  85. case "1":
  86. case "2":
  87. case "3":
  88. case "4":
  89. case "5":
  90. case "6":
  91. case "7":
  92. case "8":
  93. case "9":
  94. case ".":
  95. if(txtInput.getText() == null || txtInput.getText().equals("")) {
  96. if(key.equals("0")) {
  97. return;
  98. }
  99. if(key.equals(".")) {
  100. txtInput.setText("0.");
  101. return;
  102. }
  103. }if(txtInput.getText().indexOf(".") != -1 && key.equals(".")) {
  104. return;
  105. }
  106. txtInput.setText(txtInput.getText() + key);
  107. break;
  108. case "+":
  109. this.operation = "+";
  110.  
  111. if(txtInput.getText() == null || txtInput.getText().equals("")) {
  112. v1 = 0;
  113. }else {
  114. //转换为double类型
  115. v1 = Double.parseDouble(txtInput.getText());
  116. }
  117. txtInput.setText("");
  118. break;
  119. case "-":
  120. this.operation = "-";
  121. if(txtInput.getText() == null || txtInput.getText().equals("")) {
  122. v1 = 0;
  123. }else {
  124. //转换为double类型
  125. v1 = Double.parseDouble(txtInput.getText());
  126. }
  127. txtInput.setText("");
  128. break;
  129. case "*":
  130. this.operation = "*";
  131. if(txtInput.getText() == null || txtInput.getText().equals("")) {
  132. v1 = 0;
  133. }else {
  134. //转换为double类型
  135. v1 = Double.parseDouble(txtInput.getText());
  136. }
  137. txtInput.setText("");
  138. break;
  139. case "/":
  140. this.operation = "/";
  141. if(txtInput.getText() == null || txtInput.getText().equals("")) {
  142. v1 = 0;
  143. }else {
  144. //转换为double类型
  145. v1 = Double.parseDouble(txtInput.getText());
  146. }
  147. txtInput.setText("");
  148. break;
  149. case "=":
  150. if(txtInput.getText() == null || txtInput.getText().equals("")) {
  151. v2 = 0;
  152. }else {
  153. //转换为double类型
  154. v2 = Double.parseDouble(txtInput.getText());
  155. }
  156. switch(this.operation) {
  157. case "+":
  158. result = v1 + v2;
  159. break;
  160. case "-":
  161. result = v1 - v2;
  162. break;
  163. case "*":
  164. result = v1 * v2;
  165. break;
  166. case "/":
  167. if (v2 == 0) {
  168. return;
  169. }
  170. result = v1 / v2;
  171. break;
  172. }
  173. txtInput.setText(String.valueOf(result));
  174. v1 = 0;
  175. v2 = 0;
  176. result = 0;
  177. flag = true;
  178. }
  179. }
  180. }

计算机测试显示窗口 :

  1. package com.yj.test;
  2.  
  3. public class Test {
  4.  
  5. public static void main(String[] args) {
  6. CaculateFrame cf = new CaculateFrame();
  7. cf.setVisible(true);
  8. }
  9.  
  10. }

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. mybatis-动态sql-trim、where、set

    1. where标签的作用:如果该标签包含的元素中有返回值,就插入一个where:如果where后面的字符是以AND和OR开头的,就讲他们剔除. int findUserByWhere(@Param( ...

  2. VS的快捷操作

    连按两下Tab,生成代码块.修改i为n,再按一次Tab,对应位置自动改变. Ctrl+. 或者 Alt+Enter ctor  连按两下Tab,生成无返回值的构造函数(constructor func ...

  3. jquery trigger() 方法 语法

    jquery trigger() 方法 语法 作用:trigger() 方法触发被选元素的指定事件类型.深圳大理石平台 触发事件:规定被选元素要触发的事件. 语法:$(selector).trigge ...

  4. vue 项目实战之小坑坑

    1. Vue 多个元素动画 ,需要使用 transition-group 标签,并且需要赋值 唯一 key 值. 2. 用ajax 获取到数据赋值给data 后 ,再手动向data里添加的属性无效. ...

  5. LA 4223 最短路 路径选择要求提高一点

    F - Trucking Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Statu ...

  6. JavaWeb_(Struts2框架)使用Struts框架实现用户的登陆

    JavaWeb_(Struts2框架)使用Servlet实现用户的登陆 传送门 JavaWeb_(Struts2框架)Servlet与Struts区别 传送门 MySQL数据库中存在Gary用户,密码 ...

  7. 异常处理(Exception Handling)

    java里的异常处理(Exception)Exception 是在程序执行过程中发生的一些不希望发生的事情,这些事情如果不被好好处理,就会导致奇怪的结果或者是程序终结.Exception Handle ...

  8. Function和Object 应该知道的

    javascript有5种基础的内建对象(Fundamental Objects),Object.Function.Error.Symbol.Boolean,而Object/Function尤为特殊, ...

  9. 面试准备一个访问一个URL的过程简版

    客户端获取URL - > DNS解析 - > TCP连接 - >发送HTTP请求 - >服务器处理请求 - >返回报文 - >浏览器解析渲染页面 - > TC ...

  10. 【软件工程】Alpha冲刺(2/6)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 了解了如何根据系统获取的实际情况进行后端任务的调整 网易云音乐推荐算法的分析 ...