展开全部

import java.awt.*;

import java.awt.event.*;

import java.lang.*;

import javax.swing.*;

public class Counter extends Frame {

// 声明三个面62616964757a686964616fe58685e5aeb931333236393137板的布局

GridLayout gl1, gl2, gl3;

Panel p0, p1, p2, p3;

JTextField tf1;

TextField tf2;

Button b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14,

b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26;

StringBuffer str;// 显示屏所显示的字符串

double x, y;// x和y都是运算数

int z;// Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"

static double m;// 记忆的数字

public Counter() {

gl1 = new GridLayout(1, 4, 10, 0);// 实例化三个面板的布局

gl2 = new GridLayout(4, 1, 0, 15);

gl3 = new GridLayout(4, 5, 10, 15);

tf1 = new JTextField(27);// 显示屏

tf1.setHorizontalAlignment(JTextField.RIGHT);

tf1.setEnabled(false);

tf1.setText("0");

tf2 = new TextField(10);// 显示记忆的索引值

tf2.setEditable(false);

// 实例化所有按钮、设置其前景色并注册监听器

b0 = new Button("Backspace");

b0.setForeground(Color.red);

b0.addActionListener(new Bt());

b1 = new Button("CE");

b1.setForeground(Color.red);

b1.addActionListener(new Bt());

b2 = new Button("C");

b2.setForeground(Color.red);

b2.addActionListener(new Bt());

b3 = new Button("MC");

b3.setForeground(Color.red);

b3.addActionListener(new Bt());

b4 = new Button("MR");

b4.setForeground(Color.red);

b4.addActionListener(new Bt());

b5 = new Button("MS");

b5.setForeground(Color.red);

b5.addActionListener(new Bt());

b6 = new Button("M+");

b6.setForeground(Color.red);

b6.addActionListener(new Bt());

b7 = new Button("7");

b7.setForeground(Color.blue);

b7.addActionListener(new Bt());

b8 = new Button("8");

b8.setForeground(Color.blue);

b8.addActionListener(new Bt());

b9 = new Button("9");

b9.setForeground(Color.blue);

b9.addActionListener(new Bt());

b10 = new Button("/");

b10.setForeground(Color.red);

b10.addActionListener(new Bt());

b11 = new Button("sqrt");

b11.setForeground(Color.blue);

b11.addActionListener(new Bt());

b12 = new Button("4");

b12.setForeground(Color.blue);

b12.addActionListener(new Bt());

b13 = new Button("5");

b13.setForeground(Color.blue);

b13.addActionListener(new Bt());

b14 = new Button("6");

b14.setForeground(Color.blue);

b14.addActionListener(new Bt());

b15 = new Button("*");

b15.setForeground(Color.red);

b15.addActionListener(new Bt());

b16 = new Button("%");

b16.setForeground(Color.blue);

b16.addActionListener(new Bt());

b17 = new Button("1");

b17.setForeground(Color.blue);

b17.addActionListener(new Bt());

b18 = new Button("2");

b18.setForeground(Color.blue);

b18.addActionListener(new Bt());

b19 = new Button("3");

b19.setForeground(Color.blue);

b19.addActionListener(new Bt());

b20 = new Button("-");

b20.setForeground(Color.red);

b20.addActionListener(new Bt());

b21 = new Button("1/X");

b21.setForeground(Color.blue);

b21.addActionListener(new Bt());

b22 = new Button("0");

b22.setForeground(Color.blue);

b22.addActionListener(new Bt());

b23 = new Button("+/-");

b23.setForeground(Color.blue);

b23.addActionListener(new Bt());

b24 = new Button(".");

b24.setForeground(Color.blue);

b24.addActionListener(new Bt());

b25 = new Button("+");

b25.setForeground(Color.red);

b25.addActionListener(new Bt());

b26 = new Button("=");

b26.setForeground(Color.red);

b26.addActionListener(new Bt());

// 实例化四个面板

p0 = new Panel();

p1 = new Panel();

p2 = new Panel();

p3 = new Panel();

// 创建一个空字符串缓冲区

str = new StringBuffer();

// 添加面板p0中的组件和设置其在框架中的位置和大小

p0.add(tf1);

p0.setBounds(10, 25, 300, 40);

// 添加面板p1中的组件和设置其在框架中的位置和大小

p1.setLayout(gl1);

p1.add(tf2);

p1.add(b0);

p1.add(b1);

p1.add(b2);

p1.setBounds(10, 65, 300, 25);

// 添加面板p2中的组件并设置其的框架中的位置和大小

p2.setLayout(gl2);

p2.add(b3);

p2.add(b4);

p2.add(b5);

p2.add(b6);

p2.setBounds(10, 110, 40, 150);

// 添加面板p3中的组件并设置其在框架中的位置和大小

p3.setLayout(gl3);// 设置p3的布局

p3.add(b7);

p3.add(b8);

p3.add(b9);

p3.add(b10);

p3.add(b11);

p3.add(b12);

p3.add(b13);

p3.add(b14);

p3.add(b15);

p3.add(b16);

p3.add(b17);

p3.add(b18);

p3.add(b19);

p3.add(b20);

p3.add(b21);

p3.add(b22);

p3.add(b23);

p3.add(b24);

p3.add(b25);

p3.add(b26);

p3.setBounds(60, 110, 250, 150);

// 设置框架中的布局为空布局并添加4个面板

setLayout(null);

add(p0);

add(p1);

add(p2);

add(p3);

setResizable(false);// 禁止调整框架的大小

// 匿名类关闭窗口

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e1) {

System.exit(0);

}

});

setBackground(Color.lightGray);

setBounds(100, 100, 320, 280);

setVisible(true);

}

// 构造监听器

class Bt implements ActionListener {

public void actionPerformed(ActionEvent e2)

{

try{

if(e2.getSource()==b1)// 选择"CE"清零

{

tf1.setText("0");// 把显示屏清零

str.setLength(0);// 清空字符串缓冲区以准备接收新的输入运算数

}

else if(e2.getSource()==b2)// 选择"C"清零

{

tf1.setText("0");// 把显示屏清零

str.setLength(0);

}

else if(e2.getSource()==b23)// 单击"+/-"选择输入的运算数是正数还是负数

{

x=Double.parseDouble(tf1.getText().trim());

tf1.setText(""+(-x));

}

else if(e2.getSource()==b25)// 单击加号按钮获得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);// 清空缓冲区以便接收新的另一个运算数

y=0d;

z=0;

}

else if(e2.getSource()==b20)// 单击减号按钮获得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);

y=0d;

z=1;

}

else if(e2.getSource()==b15)// 单击乘号按钮获得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);

y=0d;

z=2;

}

else if(e2.getSource()==b10)// 单击除号按钮获得x的值和z的值并空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);

y=0d;

z=3;

}

else if(e2.getSource()==b26)// 单击等号按钮输出计算结果

{

str.setLength(0);

switch(z)

{

case 0 : tf1.setText(""+(x+y));break;

case 1 : tf1.setText(""+(x-y));break;

case 2 : tf1.setText(""+(x*y));break;

case 3 : tf1.setText(""+(x/y));break;

}

}

else if(e2.getSource()==b24)// 单击"."按钮输入小数

{

if(tf1.getText().trim().indexOf('.')!=-1)// 判断字符串中是否已经包含了小数点

{

}

else// 如果没数点有小

{

if(tf1.getText().trim().equals("0"))// 如果初时显示为0

{

str.setLength(0);

tf1.setText((str.append("0"+e2.getActionCommand())).toString());

}

else if(tf1.getText().trim().equals(""))// 如果初时显示为空则不做任何操作

{

}

else

{

tf1.setText(str.append(e2.getActionCommand()).toString());

}

}

y=0d;

}

else if(e2.getSource()==b11)// 求平方根

{

x=Double.parseDouble(tf1.getText().trim());

tf1.setText("数字格式异常");

if(x<0)

tf1.setText("负数没有平方根");

else

tf1.setText(""+Math.sqrt(x));

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b16)// 单击了"%"按钮

{

x=Double.parseDouble(tf1.getText().trim());

tf1.setText(""+(0.01*x));

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b21)// 单击了"1/X"按钮

{

x=Double.parseDouble(tf1.getText().trim());

if(x==0)

{

tf1.setText("除数不能为零");

}

else

{

tf1.setText(""+(1/x));

}

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b3)// MC为清除内存

{

m=0d;

tf2.setText("");

str.setLength(0);

}

else if(e2.getSource()==b4)// MR为重新调用存储的数据

{

if(tf2.getText().trim()!="")// 有记忆数字

{

tf1.setText(""+m);

}

}

else if(e2.getSource()==b5)// MS为存储显示的数据

{

m=Double.parseDouble(tf1.getText().trim());

tf2.setText("M");

tf1.setText("0");

str.setLength(0);

}

else if(e2.getSource()==b6)// M+为将显示的数字与已经存储的数据相加要查看新的数字单击MR

{

m=m+Double.parseDouble(tf1.getText().trim());

}

else// 选择的是其他的按钮

{

if(e2.getSource()==b22)// 如果选择的是"0"这个数字键

{

if(tf1.getText().trim().equals("0"))// 如果显示屏显示的为零不做操作

{

}

else

{

tf1.setText(str.append(e2.getActionCommand()).toString());

y=Double.parseDouble(tf1.getText().trim());

}

}

else if(e2.getSource()==b0)// 选择的是“BackSpace”按钮

{

if(!tf1.getText().trim().equals("0"))// 如果显示屏显示的不是零

{

if(str.length()!=1)

{

tf1.setText(str.delete(str.length()-1,str.length()).toString());// 可能抛出字符串越界异常

}

else

{

tf1.setText("0");

str.setLength(0);

}

}

y=Double.parseDouble(tf1.getText().trim());

}

else// 其他的数字键

{

tf1.setText(str.append(e2.getActionCommand()).toString());

y=Double.parseDouble(tf1.getText().trim());

}

}

}

catch(NumberFormatException e){

tf1.setText("数字格式异常");

}

catch(StringIndexOutOfBoundsException e){

tf1.setText("字符串索引越界");

}

} }

public static void main(String args[]) {

new Counter();

}

}

本回答由提问者推荐

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

java 计算器 下载_那里可以下载到JAVA编的计算器程序??相关推荐

  1. 无忧考吧2017二级java_无忧考吧二级JAVA超级模拟软件下载_无忧考吧二级JAVA超级模拟软件官方下载-太平洋下载中心...

    无忧考吧二级JAVA超级模拟软件是一款可以帮助用户朋友来学习计算机二级java语言考试的软件,使用这款二级java模拟考试软件可以帮助用户快速的掌握学习内容和操作逻辑,让你顺利的通过二级java考试. ...

  2. black duck 下载_如何创建安全的Java软件:与Black Duck的Tim Mackey交谈

    black duck 下载 在TheServerSide对安全Java软件开发的持续报道中,我最近与Black Duck Software的IT传播者Tim Mackey进行了交谈. 这次对话非常有趣 ...

  3. java 文件下载方法_【工具类】Java后台上传下载文件的几种方式

    /** * 将本地照片上传至腾讯云服务上 */ public void uploadImage(String localImagePath) throws Exception { // 1.将订单照片 ...

  4. java 1.8下载_jre1.8官方下载-JAVA运行环境(jre8 64位)1.8.0.25 官网最新版【离线版】下载_东坡手机下载...

    Java 是一个通用术语,用于表示 Java 软件及其组件,包括"Java 运行时环境 (JRE)"和"Java 虚拟机 (JVM)". 相信很多用户都用过JA ...

  5. java运行库 7.0.90.5_Java运行库下载-jdk1.7 64位下载1.8.0.20 官方最新版下载_东坡手机下载...

    JDK(Java Development Kit)是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库.JDK作为JAVA开发的环境,不管是做JAVA开发还是做安卓开发,都必须 ...

  6. 原创力文档怎么免费下载_哪里可以下载免费的PDF文档转换器?

    在我们使用电脑的过程中,经常会使用到各种类型的文档,其中PDF文档也非常受欢迎,尤其对PDF文档转换器工具的需求非常广,由此PDF文档转换器也成为了众多技术人员研究的对象,以满足众多使用者的需求. 本 ...

  7. c语言程序与实验系统,C/C ++程序设计学习与实验软件系统v2019 最新版下载_云间下载...

    C/C ++程序设计学习与实验系统是一款可用于设计教学演示.学习与实验的C/C ++语言编程学习软件,是由从事教学的老师根据C/C ++的初学者及C程序多媒体演示研发.想自学的c语言的朋友不要错过了, ...

  8. 漫画算法python版下载_用 Python 下载漫画

    ReLIFE 1. 开篇 前一阵子看了 Relife 这部七月番动画,短短 13 集很快就看完,深深无法自拔,然后去查了下,发现原来是改编自漫画的,于是立马去找漫画的资源,但是搜来搜去都没有找到资源下 ...

  9. 看漫画学python下载_用 Python 下载漫画

    ReLIFE 1. 开篇 前一阵子看了 Relife 这部七月番动画,短短 13 集很快就看完,深深无法自拔,然后去查了下,发现原来是改编自漫画的,于是立马去找漫画的资源,但是搜来搜去都没有找到资源下 ...

  10. 库乐队历史版本怎么下载_库乐队下载_库乐队安卓版下载_库乐队下载安装-太平洋下载中心...

    库乐队app--你的掌上录音棚.通过库乐队下载你可在线制作DJ创作音乐,把手机当作乐器演奏,以及随处创作乐曲.分享乐曲等.库乐队安卓版能让你的手机变成一套触控乐器和功能完备的录音工作室,这样无论身处何 ...

最新文章

  1. [SCOI2007]降雨量
  2. 30jquery-qrcode生成二维码
  3. 【dll 返回字符串 】2
  4. java数组比较的头文件_Java和C++的数组比较
  5. Angular 在项目中使用fullcalendar 日程表
  6. 破解"中国裁判文书网"App加密过程
  7. Jenkins下载安装配置教程(官网)
  8. Windows更改鼠标滚轮方向
  9. 掌握如何使用Rose绘制活动图的方法
  10. C#(unity/新手向)游戏暂停按钮(实现点击切换按钮文字:暂停/继续)
  11. vim实用技巧总结 [Linux]
  12. dnf第七章waiguaⅢ∨dnf第七章好感度【=dnf第七章免费外挂
  13. 索骥馆-DIY硬盘之《新手3周学通硬盘芯片级维修》扫描版[PDF]
  14. VScode如何自动换行
  15. 《数字化决策》连载 | 七:探索并建立决策模型(3)
  16. vue3+jsx+antd 的双向数据绑定、事件绑定、变量绑定方法
  17. vue : 无法加载文件 C:\Users\lenovo\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。解决方法
  18. 关于商业企业创业的思考
  19. 记一次钉钉群聊机器人的开发
  20. 关于js join 方法介绍

热门文章

  1. hbase使用restful接口进行数据操作
  2. python机器学习案例系列教程——层次聚类(文档聚类)
  3. 五分钟快速过完Verilog HDL基本概念(2)
  4. Docker部署微服务应用的架构设计
  5. 【Fastboot】给android刷整个系统和系统某个单独模块的方法
  6. Educational Round 26 C. Two Seals
  7. 第六届中国云计算大会详细日程
  8. 在同一个数据库表中添加不同的数据(笛卡尔积)
  9. dos中进入其他盘中的方法
  10. 分享40套非常精美的免费 PSD 网页图标素材