总结:我用if()语句写计算功能的代码时,实现不了,与switch_-catch语句不一样。不知到怎么实现

  1. package com.p;
  2.  
  3. import javax.swing.*;
  4.  
  5. import java.awt.BorderLayout;
  6. import java.awt.GridLayout;
  7. import java.awt.event.ActionEvent;
  8. import java.awt.event.ActionListener;
  9.  
  10. //这是一个计算器
  11. //用的是网格布局管理器,不是纯按钮组合,发现
  12.  
  13. class calc extends JFrame implements ActionListener {
  14. JPanel jp;
  15. JTextField jf;
  16. double s = 0;// 这里是用来接收我所计算的表达式的值
  17. boolean of = true;
  18. double num1 = 0;
  19. double num2 = 0;
  20. char c = '\0';// 这是装所有运算符
  21. JButton jb1, jb2, jb3, jb4, jb5, jb6, jb7, jb8, jb9, jb0, jb_jia, jb_jian,
  22. jb_cheng, jb_chu, jb_deng, jb_dian;
  23.  
  24. calc() {
  25. jf = new JTextField();// 这里不设置,也没有区别啊?
  26. jf.setHorizontalAlignment(JTextField.RIGHT);// 设置光标最右显示
  27. jp = new JPanel();
  28. jb1 = new JButton("1");// 这是计算器上的按钮
  29. jb2 = new JButton("2");// 这是计算器上的按钮
  30. jb3 = new JButton("3");// 这是计算器上的按钮
  31. jb4 = new JButton("4");// 这是计算器上的按钮
  32. jb5 = new JButton("5");// 这是计算器上的按钮
  33. jb6 = new JButton("6");// 这是计算器上的按钮
  34. jb7 = new JButton("7");// 这是计算器上的按钮
  35. jb8 = new JButton("8");// 这是计算器上的按钮
  36. jb9 = new JButton("9");// 这是计算器上的按钮
  37. jb0 = new JButton("0");// 这是计算器上的按钮
  38. jb_jia = new JButton("+");// 这是计算器上的按钮
  39. jb_jian = new JButton("-");// 这是计算器上的按钮
  40. jb_cheng = new JButton("*");// 这是计算器上的按钮
  41. jb_chu = new JButton("/");// 这是计算器上的按钮
  42. jb_deng = new JButton("=");
  43. jb_dian = new JButton(".");
  44. // 注册监听,给每一个按钮
  45. jb1.addActionListener(this);
  46. jb2.addActionListener(this);
  47. jb3.addActionListener(this);
  48. jb4.addActionListener(this);
  49. jb5.addActionListener(this);
  50. jb6.addActionListener(this);
  51. jb7.addActionListener(this);
  52. jb8.addActionListener(this);
  53. jb9.addActionListener(this);
  54. jb0.addActionListener(this);
  55. jb_jia.addActionListener(this);
  56. jb_jian.addActionListener(this);
  57. jb_cheng.addActionListener(this);
  58. jb_chu.addActionListener(this);
  59. jb_deng.addActionListener(this);
  60. jb_dian.addActionListener(this);
  61.  
  62. // this.add(jf);//在按钮上添加文本框
  63. jp.add(jb1);
  64. jp.add(jb2);
  65. jp.add(jb3);
  66. jp.add(jb_jia);
  67. jp.add(jb4);
  68. jp.add(jb5);
  69. jp.add(jb6);
  70. jp.add(jb_jian);
  71. jp.add(jb7);
  72. jp.add(jb8);
  73. jp.add(jb9);
  74. jp.add(jb_cheng);
  75. jp.add(jb0);
  76. jp.add(jb_chu);
  77. jp.add(jb_dian);
  78. jp.add(jb_deng);
  79. jp.setLayout(new GridLayout(4, 4));
  80. this.add(jf, BorderLayout.NORTH);// 你看我并没有错,只是文本框没有显示出来,原因应该是,jframe默认的布局是居中,而我没有把它放在最上面
  81. this.add(jp);
  82. this.setBounds(100, 10, 300, 200);
  83. this.setDefaultCloseOperation(3);
  84. // this.setResizable(false);
  85. this.setVisible(true);
  86.  
  87. }
  88.  
  89. // 这里main函数里的对象new错了。其实什么意义我都不懂啊。忘了真的是
  90.  
  91. public void actionPerformed(ActionEvent e) {
  92. // 这是
  93. String str = e.getActionCommand();// 获取所有的字符串
  94.  
  95. // 这里是按钮上点的字
  96. if (str.equals("1") || str.equals("2") || str.equals(".")
  97. || str.equals("3") || str.equals("4") || str.equals("5")
  98. || str.equals("6") || str.equals("7") || str.equals("8")
  99. || str.equals("9")) {
  100. if (of) {
  101. jf.setText(str);
  102. of = false;// 看吧这里只能输入一个数显示
  103. } else {
  104. jf.setText(jf.getText() + str);// 这里就可以把后来输入的数字添加在后面是个新数字
  105. of = false;
  106.  
  107. }
  108.  
  109. } else if (str.equals("+") || str.equals("-") || str.equals("*")
  110. || str.equals("/")) {
  111. num1 = Double.parseDouble(jf.getText());// 获取文本框内容的信息
  112.  
  113. // 这里从字符串中取出指定为索引位置的字符
  114. c = str.charAt(0);
  115. of = true;
  116. } else if (str.equals("=")) {
  117. num2 = Double.parseDouble(jf.getText());// 这是第二个数字
  118. switch (c) {
  119.  
  120. case '+':
  121. s = (num1 + num2);
  122. break;
  123. case '-':
  124. s = (num1 - num2);
  125. break;
  126. case '*':
  127. s = (num1 * num2);
  128. break;
  129. case '/':
  130. s = (num1 / num2);
  131. break;
  132. }
  133. jf.setText(s + " ");
  134. of = true;
  135. }
  136.  
  137. }
  138.  
  139. }
  140.  
  141. public class Deo {
  142. public static void main(String[] args) {
  143. new calc();
  144. }
  145. }

  

java代码------计算器的更多相关文章

  1. java代码---------计算器实现

    总结:虽然,没有人会帮你到底,凭什么要对你怜香惜玉 注意实现哪一个运算就把相关代码放在else if这个判断语句里面 package com.rue; import java.awt.BorderLa ...

  2. java代码----------计算器代码

    总结: 很多不完善—— package com.rue; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.a ...

  3. java代码-----计算器,界面+功能+boolean

    总结:还是那个不懂代码放在哪里好?不知道怎么定义一些关键性变量.比如boolean 型的. package com.sads; import java.awt.BorderLayout; import ...

  4. java代码------计算器核心位置添加

    总结:点击等号时,什么代码 else if(str.equals("-")){ ready=true; if(c=='\0'){ num1=Double.parseDouble(j ...

  5. 200行Java代码搞定计算器程序

    发现了大学时候写的计算器小程序,还有个图形界面,能够图形化展示表达式语法树,哈哈;) 只有200行Java代码,不但能够计算加减乘除,还能够匹配小括号~ 代码点评: 从朴素的界面配色到简单易懂错误提示 ...

  6. [java代码库]-简易计算器(第二种)

    [java代码库]-简易计算器(第二种) 第二种方案:在程序中不使用if/switch……case等语句,完成计算器功能. <html> <head> <title> ...

  7. 对一致性Hash算法,Java代码实现的深入研究

    一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...

  8. 怎样编写高质量的java代码

    代码质量概述     怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍.也请有过代码质量相关经验的朋友 ...

  9. 数据结构笔记--二叉查找树概述以及java代码实现

    一些概念: 二叉查找树的重要性质:对于树中的每一个节点X,它的左子树任一节点的值均小于X,右子树上任意节点的值均大于X. 二叉查找树是java的TreeSet和TreeMap类实现的基础. 由于树的递 ...

随机推荐

  1. eureka-8-Eureka 的健康检查

    eureka.client.healthcheck.enabled:true 应用程序将自己的健康状态传播到Eureka Server

  2. LeetCode OJ:Reorder List(重序链表)

    Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must do thi ...

  3. Spring报错: org.springframework.beans.factory.support.BeanDefinitionValidationException: Couldn't find an init method named 'init' on bean with name 'car'(待解答)

    在Spring工程里,有一个Car类的bean,Main.java主程序,MyBeanPostProcessor.java是Bean后置处理器. 文件目录结构如下: Car.java package ...

  4. 在.NET Core中连接使用Zookeeper

    一开始找到的是ZookeeperNetEx,但是很多API都很原始,不怎么好用. 最后确定用Rabbit.Zookeeper来做,他对ZookeeperNetEx进行了封装,要简单不少. 和c语言和j ...

  5. Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析

    Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析 2018年04月03日 13:51:55 阅读数:936   XEN 与 VMware ESXi,Hyper-V 以及 K ...

  6. geotools中泰森多边形的生成

    概述 本文讲述如何在geotools中生成泰森多边形,并shp输出. 泰森多边形 1.定义 泰森多边形又叫冯洛诺伊图(Voronoi diagram),得名于Georgy Voronoi,是由一组由连 ...

  7. Freemaker的java.beans.IntrospectionException: type mismatch between read and write methods

    引言:freemaker在特定的spring以及jdk下的问题解决路径. 环境描述 spring 3.1.1, jdk1.8u80, freemake 2.3.19 错误信息描述: 严重: Excep ...

  8. angularjs 阻止浏览器自带的回退

    $scope.$on('$locationChangeStart', function(e) { if(!tfOrder && comm.getStorage('orederlistL ...

  9. SQL Server插入或修改数据是中文乱码的问题

    SQL Server中乱码解决方案: 在Sql Server2005英文版中,如果未对Varchar类型的字段进行设置,那么很多朋友会发现向数据库中插入记录时,如果对应的varchar类型字段 的值为 ...

  10. vue-route(三)后台管理路由配置

    在一个后台管理的项目中,关于路由的配置,     我们需要实现的一个布局是header,aside,main三部分,后期还可能添加footer部分,实现的需求是请求数据时,局部的刷新,这个时候我们就需 ...