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

package com.p;

import javax.swing.*;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; //这是一个计算器
//用的是网格布局管理器,不是纯按钮组合,发现 class calc extends JFrame implements ActionListener {
JPanel jp;
JTextField jf;
double s = 0;// 这里是用来接收我所计算的表达式的值
boolean of = true;
double num1 = 0;
double num2 = 0;
char c = '\0';// 这是装所有运算符
JButton jb1, jb2, jb3, jb4, jb5, jb6, jb7, jb8, jb9, jb0, jb_jia, jb_jian,
jb_cheng, jb_chu, jb_deng, jb_dian; calc() {
jf = new JTextField();// 这里不设置,也没有区别啊?
jf.setHorizontalAlignment(JTextField.RIGHT);// 设置光标最右显示
jp = new JPanel();
jb1 = new JButton("1");// 这是计算器上的按钮
jb2 = new JButton("2");// 这是计算器上的按钮
jb3 = new JButton("3");// 这是计算器上的按钮
jb4 = new JButton("4");// 这是计算器上的按钮
jb5 = new JButton("5");// 这是计算器上的按钮
jb6 = new JButton("6");// 这是计算器上的按钮
jb7 = new JButton("7");// 这是计算器上的按钮
jb8 = new JButton("8");// 这是计算器上的按钮
jb9 = new JButton("9");// 这是计算器上的按钮
jb0 = new JButton("0");// 这是计算器上的按钮
jb_jia = new JButton("+");// 这是计算器上的按钮
jb_jian = new JButton("-");// 这是计算器上的按钮
jb_cheng = new JButton("*");// 这是计算器上的按钮
jb_chu = new JButton("/");// 这是计算器上的按钮
jb_deng = new JButton("=");
jb_dian = new JButton(".");
// 注册监听,给每一个按钮
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
jb4.addActionListener(this);
jb5.addActionListener(this);
jb6.addActionListener(this);
jb7.addActionListener(this);
jb8.addActionListener(this);
jb9.addActionListener(this);
jb0.addActionListener(this);
jb_jia.addActionListener(this);
jb_jian.addActionListener(this);
jb_cheng.addActionListener(this);
jb_chu.addActionListener(this);
jb_deng.addActionListener(this);
jb_dian.addActionListener(this); // this.add(jf);//在按钮上添加文本框
jp.add(jb1);
jp.add(jb2);
jp.add(jb3);
jp.add(jb_jia);
jp.add(jb4);
jp.add(jb5);
jp.add(jb6);
jp.add(jb_jian);
jp.add(jb7);
jp.add(jb8);
jp.add(jb9);
jp.add(jb_cheng);
jp.add(jb0);
jp.add(jb_chu);
jp.add(jb_dian);
jp.add(jb_deng);
jp.setLayout(new GridLayout(4, 4));
this.add(jf, BorderLayout.NORTH);// 你看我并没有错,只是文本框没有显示出来,原因应该是,jframe默认的布局是居中,而我没有把它放在最上面
this.add(jp);
this.setBounds(100, 10, 300, 200);
this.setDefaultCloseOperation(3);
// this.setResizable(false);
this.setVisible(true); } // 这里main函数里的对象new错了。其实什么意义我都不懂啊。忘了真的是 public void actionPerformed(ActionEvent e) {
// 这是
String str = e.getActionCommand();// 获取所有的字符串 // 这里是按钮上点的字
if (str.equals("1") || str.equals("2") || str.equals(".")
|| str.equals("3") || str.equals("4") || str.equals("5")
|| str.equals("6") || str.equals("7") || str.equals("8")
|| str.equals("9")) {
if (of) {
jf.setText(str);
of = false;// 看吧这里只能输入一个数显示
} else {
jf.setText(jf.getText() + str);// 这里就可以把后来输入的数字添加在后面是个新数字
of = false; } } else if (str.equals("+") || str.equals("-") || str.equals("*")
|| str.equals("/")) {
num1 = Double.parseDouble(jf.getText());// 获取文本框内容的信息 // 这里从字符串中取出指定为索引位置的字符
c = str.charAt(0);
of = true;
} else if (str.equals("=")) {
num2 = Double.parseDouble(jf.getText());// 这是第二个数字
switch (c) { case '+':
s = (num1 + num2);
break;
case '-':
s = (num1 - num2);
break;
case '*':
s = (num1 * num2);
break;
case '/':
s = (num1 / num2);
break;
}
jf.setText(s + " ");
of = true;
} } } public class Deo {
public static void main(String[] args) {
new calc();
}
}

  

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. wget 认知及常用命令【转载】

    https://www.cnblogs.com/lxz88/p/6278268.html https://www.cnblogs.com/cindy-cindy/p/6847502.html

  2. 【Seajs源码分析】3. 工具方法2

    util-request.js 动态加载模块 /** * util-request.js - The utilities for requesting script and style files * ...

  3. Webstorm常用快捷键大全

    webstorm应该是目前最强的js编辑器了,结合sublime text可以很效率的开发项目.今天整理了一些webstorm比较实用的快捷键: Ctrl+/ 或 Ctrl+Shift+/ 注释(// ...

  4. Ubuntu下sh *.sh使用==操作符执行报错

    ----<鸟哥的Linux私房菜--基础篇>学习笔记 ubuntu默认的sh是连接到dash,而我们写shell脚本时使用的时bash.bash和dash在一些方面是不兼容的.因此执行同一 ...

  5. .net 枚举(Enum)使用总结

    在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,性别只有男跟女等等.如果把这些量说明为整型.字符型或其它类型显然是不妥当的.为此,C#提供了一种称为“ ...

  6. .Net快速获取网络文本文件最后一段文字-小应用

    场景 现在公司的测试环境一些文本日志不让接触,提供一个网络http服务器让人直接访问,这文件大时,一般10MB一个文件,不在同一局域网,网速限制200K,要等很久,访问很慢. .Net代码请求文本文件 ...

  7. visual studio 一些小技巧 整理

    本博客将会陆续的整理一些作者在实际开发中的一些小技巧,一些挺有意思的东西,将会持续更新, 如果有问题,可以加群讨论,QQ群:592132877 #warning的使用 #warning 的意思是在程序 ...

  8. [QT]给QApplication安装事件过滤器 app.installEventFilter

    Qt的事件处理有5种级别: 1.      重写控件的事件处理函数:如重写keyPressEvent(),mousePressEvent()和paintEvent(),这是最常用的事件处理方法,我们已 ...

  9. django-xhtml2pdf的使用(加入图片,指定字体,设置样式)

    新博客地址:http://muker.net/django-xhtml2pdf.html 这里仅仅讨论直接利用html生成pdf这种最常见也最简单的情况. 1.要利用html生成带中文的pdf要指定中 ...

  10. 【sqlite】VS2013中C#读取SQLite数据

    从“火车采集器”(免费版)中获取的网页数据,本地只能自动保存为SQLite数据,(在工具-数据转换中切换).收费版还可以用MySql.SqlServer 今天就记录一下C#读取Sqlite数据 创建一 ...