Java编写的一个简单计算器,本人还比较菜,只能这样了,有点代码冗余,不能连续计算。

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
public class calculate extends JFrame {
JButton[] b = new JButton[10];
JPanel panel1 = new JPanel(); // 实例化面板
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JTextField answer=new JTextField(10);
JButton clear=new JButton("清除");
JButton equal=new JButton("=");
JButton point=new JButton(".");
JButton plus=new JButton("+");
JButton minus=new JButton("-");
JButton multi=new JButton("×");
JButton division=new JButton("÷");
String foreText=new String("");
String backText=new String("");
String s=new String();
String s1=new String();
Object op=new String();
Object o=new String();
double d, dFore, dBack;
int i=9;
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame calculator =new calculate();
calculator.setVisible(true); }
public calculate(){
setTitle("计算器");
setSize(300,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();//获取屏幕分辨率
setLocation(screenSize.width/4,screenSize.height/4);//位置
for ( i =9; i>=0; i--) {
b[i] = new JButton(Integer.toString(i));// 实例化数字按钮
b[i].addActionListener(new MyListener1());
panel2.add(b[i]); // 增加按钮到面板 } setLayout(new FlowLayout()); // 设置布局管理器
panel1.setLayout(new FlowLayout());
panel2.setLayout(new GridLayout(4,3,10,8));
panel3.setLayout(new GridLayout(4,1,8,12));
clear.setFont(new Font("隶书",Font.PLAIN,15));
clear.setForeground(Color.RED);
clear.addActionListener(new MyListener1());
equal.setForeground(Color.RED);
equal.addActionListener(new MyListener1());
plus.setForeground(Color.RED);
plus.addActionListener(new MyListener1());
minus.setForeground(Color.RED);
minus.addActionListener(new MyListener1());
multi.setForeground(Color.RED);
multi.addActionListener(new MyListener1());
division.setForeground(Color.RED);
division.addActionListener(new MyListener1());
equal.setFont(new Font("隶书",Font.PLAIN,20));
plus.setFont(new Font("隶书",Font.PLAIN,18));
minus.setFont(new Font("隶书",Font.PLAIN,18));
multi.setFont(new Font("隶书",Font.PLAIN,18));
division.setFont(new Font("隶书",Font.PLAIN,18));
point.addActionListener(new MyListener1());
panel1.add(answer);
panel1.add(clear);
panel2.add(point);
panel2.add(equal);
panel3.add(plus);
panel3.add(minus);
panel3.add(multi);
panel3.add(division);
add(panel1);
add(panel2);
add(panel3);
} class MyListener1 implements ActionListener{
public void actionPerformed(ActionEvent e){ for(int i=0;i<=9;i++) {
if(e.getSource()==b[i]||e.getSource()==point){
answer.setText("");
if(e.getSource()==point){ s=foreText+".";
answer.setText(s);
}else{
if(s!=""){
answer.setText(s+b[i].getText());
foreText=s+b[i].getText();//此处应当修改,
}else{
answer.setText(foreText+b[i].getText());
foreText=foreText+b[i].getText();
}
}
}
}
if(e.getSource()==clear){
foreText="";
s="";
answer.setText("");
}
if(e.getSource()==plus||e.getSource()==minus||e.getSource()==multi||e.getSource()==division){
dFore=Double.parseDouble(foreText);
s="";
foreText="";
answer.setText("");
op=e.getSource();
}
if(e.getSource()==equal){
dBack=Double.parseDouble(foreText);
foreText="";
answer.setText("");
if(op==plus){
d=dFore+dBack;
}
if(op==minus){
d=dFore-dBack;
}
if(op==multi){
d=dFore*dBack;
}
if(op==division){
d=dFore/dBack;
}
answer.setText(""+d);
}
}
}
}

运行截图

Java语言编写计算器(简单的计算器)的更多相关文章

  1. 用java语言编写的简单二叉树

    package com.cjonline.foundation.evisa; public class TestTree { private int data=-1; private TestTree ...

  2. 第二次作业利用java语言编写计算器进行四则运算

    随着第一次作业的完成,助教 牛老师又布置了第二次作业:用java语言编写一个程序然后进行四则运算用户用键盘输入一个字符来结束程序显示统计结果.一开始看到这个题目我也着实吓了一跳 因为不知道如何下手而且 ...

  3. 留念 C语言第一课简单的计算器制作

    留念 C语言第一课简单的计算器制作 学C语言这么久了.  /* 留念 C语言第一课简单的计算器制作 */   #include<stdio.h>  #include<stdlib.h ...

  4. C 语言实例 - 实现简单的计算器

    C 语言实例 - 实现简单的计算器 实现加减乘除计算. 实例 # include <stdio.h> int main() { char operator; double firstNum ...

  5. 使用java语言编写窗口按钮

    使用java语言编写窗口按钮 代码如下: package Day08; import java.awt.FlowLayout; import javax.swing.JButton;import ja ...

  6. 用C语言编写一个简单的词法分析程序

    问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...

  7. Atiitt 使用java语言编写sql函数或存储过程

    Atiitt 使用java语言编写sql函数或存储过程 1.1. java编写sql函数或存储过程的机制1 1.2. Java编写sp的优点1 1.3. 支持java源码,class文件,blog f ...

  8. Fastjson是一个Java语言编写的高性能功能完善的JSON库。

    简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库. 高性能 fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson. ...

  9. 使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网)

    使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网) 一,前期准备 1,Java IDE(Eclipse)与JDK的安装与配置jdk-15.0.1-免配置路径版提取码:earu免安装版 ...

  10. 用Java语言编写一个简易画板

    讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目 ...

随机推荐

  1. jqgrid使用sql row_number进行分页

    背景 系统中使用了jqgrid的展示,现在要处理10w+的数据量 现状 使用了全查询的,查询到了10w+的数据放到了datatable中,每次页面刷新需要9秒多,并且传递给另一个dll来处理一些事情. ...

  2. Android实例-打电话、发短信和邮件,取得手机IMEI号(XE8+小米2)

    结果: 1.不提示发短信卡住,点击没有反映,我猜想,可能是因为我用的是小米手机吧. 2.接收短信报错,我猜想可能是我改了里面的方法吧(哪位大神了解,求指教). 3.project -->opti ...

  3. A Tour of Go Map literals continued

    If the top-level type is just a type name, you can omit it from the elements of the literal. package ...

  4. C#将对象转换成JSON字符串,Newtonsoft.Json (JSON.NET)

    官方API说明文档 http://www.newtonsoft.com/json/help/html/N_Newtonsoft_Json.htm http://www.newtonsoft.com/ ...

  5. C#实现异步编程的两个简单机制(异步委托&定时器)及Thread实现多线程

    创建线程的常用方法:异步委托.定时器.Thread类 理解程序.进程.线程三者之间的区别:简而言之,一个程序至少有一个进程,一个进程至少有一个线程进程就是在内存中运行的程序(即运行着的程序):一个进程 ...

  6. 【Stage3D学习笔记续】真正的3D世界(二):显示模型

    虽然我们进入真3D世界了,但是上一章的Demo仍然是显示的一个平面,尽管我们的平面在3D空间中旋转可以看出一点3D透视的效果,但是既然是真3D,就要拿出点3D的样子来! 如果要显示3D模型,我们就要告 ...

  7. ASP.NET- 无刷新上传使用jQuery插件之ajaxFileUpload

    灰常好,我已经使用过里面的代码了,可以用,原文地址:http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html 一.ajaxFil ...

  8. JS单词形式的运算符

    1.void 运算表达式并忽略其返回值,比如void (1+2),void (0) <html> <head> <meta http-equiv="conten ...

  9. 详解struts.multipart.saveDir的临时文件路径

    Struts2中的struts.multipart.saveDir主要是用来设置上传文件的临时目录,在不同的配置方式下,它的临时文件目录大有不同,好多人在设置后往往找不到这个临时目录在哪里,下面我就来 ...

  10. JBoss7快速入门

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...