java计算器流程图_帮帮忙:Java小计算器代码,及需求分析.流程图.

展开全部

package example;

import java.awt.*;

import java.awt.event.*;

public class Calculator extends Frame {

/**

* 本实例实现功能如下 1.普通加减乘除运算 2.小数点的情况已经解32313133353236313431303231363533e58685e5aeb931333236393738决 3.开始按0已经解决 4.消去键可以起作用

*

*/

private static final long serialVersionUID = 1L;

private String name[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",

".", "=", "+", "-", "*", "/", "Backspace", "", "", "C" };

private Button button[] = new Button[name.length];

private TextField textfield = new TextField("0.");

// 设置2个字符A1,A2用于存放点击运算符号之前的String数据

private String A1 = null, A2 = null;

// 设置2个字符B1,B2用于存放点击运算符号之后的String数据

private String B1 = null, B2 = null;

// 存放运算符号前后的数据,douuble类型进行运算

private double A, B;

// s存放为哪种运算符号,Result存放最后的运行结果

private String Result="0", s;

// 判断这个数字是否为小数,小数的时为true不是时为false

private boolean Decimal=false;

// 构造器,显示在标题栏

public Calculator() {

super("TEST:Caculator");

}

// 计算器的基本布局,在一个BorderLayout上面放置了一个GridLayout一个BorderLayout

public void init() {

setLayout(new BorderLayout(2, 2));

// 设置2个Panel

Panel p0 = new Panel();

Panel p1 = new Panel();

// p0上添加所有按扭

p0.setLayout(new GridLayout(5, 4, 1, 1));

// 不同的按扭采用不同的监听事件0-9和"."采用ButtonListener()

for (int i = 0; i < 11; i++) {

button = new Button(name);

// 设置字体颜色为蓝色

button.setForeground(Color.blue);

p0.add(button);

button.addActionListener(new ButtonListener());

}

// 其余的运算符号采取ButtonListener2()另一监听事件

for (int i = 11; i < name.length; i++) {

button = new Button(name);

// 设置字体颜色为红色

button.setForeground(Color.RED);

p0.add(button);

button.addActionListener(new ButtonListener2());

}

// 设置中间2个按扭不可见,增加美观,对称

button[17].setVisible(false);

button[18].setVisible(false);

// p1上添加文本输出区域

p1.setLayout(new BorderLayout(5, 5));

p1.add(textfield);

// 不可以向文本框里随便写东西

textfield.setEditable(false);

// 设置文本框背景为白色

textfield.setBackground(Color.WHITE);

add(p0, BorderLayout.SOUTH);

add(p1, BorderLayout.NORTH);

pack();

// 设置打开窗口在显示器的中间显示

setLocationRelativeTo(null);

// 关闭按扭,适配器模式

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

// 调整可见

setVisible(true);

}

public class ButtonListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

System.out.print(e.getActionCommand() + " ");

// 当A2和B2同时为null时候表示程序第一次运行或者开始一次新的运行,即按"="之后,将按键获取的值赋给A2--setp1

if (A2 == null && B2 == null) {

// 所按的数字按扭不是"0"的时候对A2进行赋值,否则给A2值不变,但是让textfield恢复初始值"0."

if (!"0".equals(e.getActionCommand())) {

// 考虑第一次按小数点的情况,按小数点后将boolean类型的Decimal定义为true

if (".".equals(e.getActionCommand())) {

A2 = "0.";

Decimal = true;

textfield.setText(A2);

} else {

A2 = e.getActionCommand();

textfield.setText(A2);

}

} else {

if ("0".equals(e.getActionCommand())) {

} else {

A2 = e.getActionCommand();

textfield.setText("0");

}

}

// 当A2不等于null,B2和A为null,表示还没有按运算符号,仍然对A2进行赋值

} else if (A2 != null && A1 == null && B2 == null) {

// 已经是小数的在点小数点不做任何动作,不是小数的在按"."的时候追加赋值并且设置Decimal为true

if (".".equals(e.getActionCommand())) {

if (Decimal) {

} else {

Decimal = true;

A2 += e.getActionCommand();

textfield.setText(A2);

}

} else {

A2 += e.getActionCommand();

textfield.setText(A2);

}

// 当A,A2不等于null,B2为null,表示刚按过运算符号,开始对B2进行赋值

// 仍要考虑"0"的情况,但要考虑0做为被减数,乘数和加数,此处B2可以等于0

// B2也可以是小数将Decimal设置回false

} else if (A2 != null && A1 != null && B2 == null) {

Decimal = false;

if (!"0".equals(e.getActionCommand())) {

// 不为"0"但为"."的情况,原理同上

if (".".equals(e.getActionCommand())) {

Decimal = true;

if (Decimal) {

B2 = "0.";

} else {

Decimal = true;

B2 = e.getActionCommand();

textfield.setText(B2);

}

} else {

B2 = e.getActionCommand();

textfield.setText(B2);

}

} else {

B2 = "0";

textfield.setText(B2);

}

// 当A,A2,B2都不为null的时候表示B2已经被赋值,继续按数字按扭对B2继续赋值

// 当B2等于0的时候不进行追加直接赋值,仅当B2不等于0的时候才进行追加

} else if (A2 != null && A1 != null && B2 != null) {

if ("0".equals(B2)) {

// 考虑用户连续2次按"0"的情况

if ("0".equals(e.getActionCommand())) {

B2 = "0";

textfield.setText(B2);

} else {

B2 = e.getActionCommand();

textfield.setText(B2);

}

} else {

// 不为"0"但为"."的情况,原理同上

if (".".equals(e.getActionCommand())) {

if (Decimal) {

} else {

Decimal = true;

B2 += e.getActionCommand();

textfield.setText(B2);

}

} else {

B2 += e.getActionCommand();

textfield.setText(B2);

}

}

}

}

}

public class ButtonListener2 implements ActionListener {

public void actionPerformed(ActionEvent e) {

System.out.print(e.getActionCommand() + " ");

// 一旦按了运算符号"+-*/"A2赋值给A,使得A和A2都不为null,但此时B2还为null在按数字键的时候便会给B2赋值

// 给s--运算符号赋值

if ("+".equals(e.getActionCommand())) {

if (A2 == null) {

A2 = "0";

}

A1 = A2;

s = "+";

} else if ("-".equals(e.getActionCommand())) {

if (A2 == null) {

A2 = "0";

}

A1 = A2;

s = "-";

} else if ("*".equals(e.getActionCommand())) {

if (A2 == null) {

A2 = "0";

}

A1 = A2;

s = "*";

} else if ("/".equals(e.getActionCommand())) {

if (A2 == null) {

A2 = "0";

}

A1 = A2;

s = "/";

// 等号的时候把B2赋值给B,进行最后的运算

} else if ("=".equals(e.getActionCommand())) {

if (A2 == null) {

A2 = "0";

}

if (B2 == null) {

B2 = "0";

}

A1 = A2;

B1 = B2;

// 将String类型转换为double进行运算

A = Double.parseDouble(A1);

B = Double.parseDouble(B1);

if ("+".equals(s)) {

Result = String.valueOf(A + B);

System.out.println();

System.out.println(A + "+" + B + "=" + Result);

} else if ("-".equals(s)) {

Result = String.valueOf(A - B);

System.out.println();

System.out.println(A + "-" + B + "=" + Result);

} else if ("*".equals(s)) {

Result = String.valueOf(A * B);

System.out.println();

System.out.println(A + "*" + B + "=" + Result);

}

textfield.setText(Result);

A1 = null;

A2 = null;

B1 = null;

B2 = null;

Decimal=false;

} else if ("Backspace".equals(e.getActionCommand())) {

String text = "0";

if (A2 == null && A1 == null) {

} else if (A2 != null && A1 == null && B2 == null) {

int t = A2.length();

text = A2;

if (t == 1) {

text = "0";

} else {

text = text.substring(0, t - 1);

}

A2 = text;

} else if (A2 != null && A1 != null && B2 == null) {

} else {

int t = B2.length();

text = B2;

if (t == 1) {

text = "0";

} else {

text = text.substring(0, t - 1);

}

B2 = text;

}

textfield.setText(text);

System.out.println();

System.out.println("text=" + text + " ");

System.out.println(A1 + ":" + A2 + ":" + B1 + ":" + B2);

// 选择"C"的时候将计算器重置,即恢复到开始的状态

} else if ("C".equals(e.getActionCommand())) {

textfield.setText("0.");

A1 = null;

A2 = null;

B1 = null;

B2 = null;

Decimal=false;

}

}

}

public static void main(String[] args) {

Calculator calculator = new Calculator();

calculator.init();

}

}

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 邮件跟踪_如何跟踪邮件已读状态(Java)

>图片的展示形式&#xff1a;html中图片元素表示&#xff1a;其中src部分是比较好玩的&#xff0c;我们可以用图片服务器链接地址&#xff0c;例如&#xff1a;我们也可以使用base64的图片字符串&#xff0c;例如&#xff1a;>利用图片加载来跟踪用户打开邮件状态&#x…

linux定时结束java进程_使用zt-exec库定时清理linux休眠进程

在几个月前上线的一个采集项目&#xff0c;构架是基于java selenium chromedriver chrome实现的采集。至于为哈不直接用jsoup或httpclient实现采集功能&#xff0c;是因为很多被采集页面都是通过js来渲染内容的&#xff0c;所以必须用webdriverchrome来模拟真正的浏览器访问…

java spring4 jar包_spring jar包官方下载|

spring-web jar包是用来SSH配置的jar包 配置了监听器&#xff0c;还出现严重: Error configuring application listener of class org.springframework.web.context.ContextLoader就需要它&#xff0c;欢迎有需要的用户前来it猫扑下载&#xff01;spring-web.jar作用spring-web…

java 找不到符号 con_我的java程序运行时,提示找不到符号,求解!

我的java程序运行时&#xff0c;提示找不到符号&#xff0c;求解!关注:163 答案:4 mip版解决时间 2021-02-07 23:57提问者人潮拥挤你不在2021-02-06 23:57import java.awt.*;import java.awt.event.*;import java.applet.Applet;import java.applet.AudioClip;public class M…

ctf的php,CTF中常见的PHP漏洞

1.MD5()漏洞php在处理字符串时会利用&#xff01;&#xff0c;||&#xff0c;进行hash值的比较 他把每一个“0E’开头的哈希值都解释为0&#xff0c;因此如果两个不同的密码经过hash处理之后都是以‘0e’开头&#xff0c;那么PHP会认为两者是相同的&#xff0c;南京邮电大学一次…

php 缩略图 失真,WORDPRESS缩略图失真变形模糊的解决方法

众所周知&#xff0c;网站最怕改版&#xff0c;其中一个主要的原因就是缩略图的问题&#xff0c;旧模板的缩略图尺寸不一定适合新版的模板缩略图尺寸要求&#xff0c;尽管后台的设置-多媒体-缩略图尺寸修改了&#xff0c;可这是新上传的图片才会生成新的尺寸的缩略图&#xff0…

php表单 提交数据,PHP表单提交数据

1.PHP表单处理PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据GET 和 POST 都创建数组(例如&#xff0c;array( key > value, key2 > value2, key3 > value3, ...))。此数组包含键/值对&#xff0c;其中的键是表单控件的名称&#xff0c;而值是来自用户的输入数据。…

php ci框架 模板引擎,详解CodeIgniter框架实现的整合Smarty引擎DEMO

CodeIgniter框架实现的整合Smarty引擎DEMO示例本文实例讲述了CodeIgniter框架实现的整合Smarty引擎。分享给大家供大家参考&#xff0c;具体如下&#xff1a;Smarty的模板机制很强大&#xff0c;一般情况下CI框架无需整合其他模板标签&#xff0c;因为PHP本身就是一种标签&…

padodb time.inc.php,怎样实现PHP中ADODB事务处理

这次给大家带来怎样实现PHP中ADODB事务处理&#xff0c;实现PHP中ADODB事务处理的注意事项有哪些&#xff0c;下面就是实战案例&#xff0c;一起来看一下。一、代码adodb.inc.php可从官方网站http://adodb.sourceforge.net/ 下载。或者点击此处本站下载。conn.php&#xff1a;&…

双用户windows linux系统,Windows与Linux合二为一?终于能在windows上运行Linux了!

原标题&#xff1a;Windows与Linux合二为一&#xff1f;终于能在windows上运行Linux了&#xff01;目前在PC端操作系统市场份额中&#xff0c;微软旗下的windows系统占据超过50%的比例。作为微软旗下发布的产品之一&#xff0c;windows系统深受用户喜爱。从经典的XP和win7&…

linux的用户及权限管理,用户及权限管理

一、Linux用户、组的概念1.用户管理员:root,0其他用户:1-65535系统用户:1-499,守护进程获取资源进行权限分配普通用户:500,交互式登陆2.组管理员组:root,0其他用户:1-65535系统用户组:1-499普通用户组:500note:关于uid,gid的范围可以参考/etc/login.def3.Linux安全上下文进程所…

linux内存使用策略swap,Linux Swap使用分析

Linux操作系统性能分析主要包含磁盘IO、CPU、内存以及网络流量&#xff0c;而这里主要针对系统内存的使用进程情况做个分析。一、如何查看系统内存使用情况1、根据常用命令查看系统内存使用概况free -gtotal used free shared buffers cachedMem: …

csky linux 编译内核,TQ2440的EmbedSky_hello模块编译内核问题及解决

已在内核代码中添加EmbedSky_hello驱动为例&#xff0c;进行内核编译时候出现了一下几个问题&#xff1a;1、在 /opt/EmbedSky/linux 2.6.30.4/drivers/char目录下修改“Kconfig”文件&#xff0c;添加如下内容&#xff1a;config EmbedSky_HELLOtristate "TQ2440/SKY2440…

linux设备树例程,iTOP-iMX6-设备树内核-实时时钟RTC以及Linux-c测试例程

当 Linux 开发者谈论一个实时时钟&#xff0c;他们通常指的是某种能记录墙上时间&#xff0c;并且有备用电池&#xff0c;以至于在系统关机的时候仍然可以工作的器件。Linux 有两个系列广泛兼容的用户空间 RTC 设备节点&#xff1a;• /dev/rtc &#xff1a; PC 机及兼容机系统…

linux jdk bin下载,Linux下安装jdk-6u45-linux-x64.bin

最近在学习linux下java开发&#xff0c;在搭环境的过程中发现网上很多配置都是错误的&#xff0c;现在写出来&#xff0c;供参考&#xff1a;从Oracle上下载jdk-6u45-linux-x64.bin1.下载文件:jdk-6u45-linux-x64.bin,将文件做成光盘挂载[rootlocalhost ~]mount /dev/cdrom /mn…

查看linux上redis的运行状态,Redis教程(七)使用info查看服务状态

一、Redis info命令介绍Redis info命令是Redis自带的一个用于查看服务状态的命令&#xff0c;这个命令类似于top一样可以查看redis服务的整个状态&#xff0c;并且分为了5大类&#xff1a;二、Redisinfo命令语法redis-cli -a redis_pass info #查看所有模块信息redis-cli -a re…

linux应用参数 冒号,Lua-面向对象中函数使用时冒号(:)和点(.)的区别

Lua-面向对象中函数使用时冒号(:)和点(.)的区别&#xff0c;我们先来看一段简单的代码&#xff1a;local Animal {}functionAnimal:Eat( food )print("Animal:Eat", self, food)endfunctionAnimal.Sleep( time )print("Animal.Sleep", self, time)endAnima…

欧框语言框架标准C2,CEFR欧洲语言共同参考框架

http://www.v4.cc/News-3997660.htmlCEFR全称是Common European Framework of Reference for Languages&#xff0c;是由欧洲语言测试者协会(ALTE)于2001年首次发布的一套建议标准&#xff0c;用来评估语言学习者在所学语言的成就&#xff0c;同时也给予一个教育上的评估方针。…

c语言简短的泡沫排序法编程,冒泡排序--简单(c语言)

//// main.cpp// bubble//// Created by duanqibo on 2019/7/17.// Copyright © 2019年 duanqibo. All rights reserved.// 冒泡排序 c语言#include #include #include #include #define N 4typedef struct student{int num;char name[20];char sex[2];int age;}stu[…

算法与数据结构c语言版PPT,C语言算法与数据结构.ppt

C语言算法与数据结构.ppt第十二章 算法与数据结构12.1 算法的基本概念,该节知识点所占试题比重为12&#xff0c;属于重点考查对象&#xff0c;基本上每次必考&#xff0c;主要考查算法的定义和对算法复杂度的理解。历次试题分值在04分之间波动。,12.1.1 考点1 算法的定义,算法是…