Andriod设计简易计算器

article/2025/10/20 7:51:57

1.设计任务及要求

     (1)设计一款基于Android系统下的计算器,实现加减乘除算法,以及清零、撤销操作。界面设计应该就尽量简洁而美观,具有良好的交互性,程序应具有较好的稳健性;
     (2)另起一行显示运算结果;
     (3)在整个输入和计算过程中,首先应该对输入的数据进行容错处理,这样有利于提高用户体验。容错设计比如:在输入过程中操作符不能连续输入,整数数据的开头不能出现0等。在程序设计过程中,需要设计数据结构来存储数字、操作符和容错标记;
     (4)对于连续输入的多组数据,如3+8/2-98或(1+2) 3+5-4/2,应当能够区分各个数字和运算符,并且根据优先级进行运算。

2.设计原理及结构框图

     将表达式的字符串进行处理,将数字和运算符分别存放在两个栈中,设计方法来处理两个栈从而得到相应的计算结果,将操作符设计优先级,乘除优先级设置为2,加减优先级设置为1。
     (1)从操作符栈中弹出两个操作符,假设为symbol1和symbol2,比较两个操作付的优先级,如果symbol1的优先级大于等于symbol2的则执行二,否则执行三。
     (2)从数字栈中弹出两个数字,计算这两个数字在操作符symbol1下的运算结果,结束后将结果压入数字栈,将symbol2压入操作符栈,最后返回一。
     (3)从数字栈中弹出三个数字,计算后两个数字在操作符symbol2下的运算结果,结束后将运算结果压入栈,将剩下的第一个数字压入栈,将操作符symbol1压入栈,最后返回一。
结构框图如下所示:
在这里插入图片描述
图1 简易计算器软件结构框图
在这里插入图片描述
图1 简易计算器功能结构框图

3.详细设计

     输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,当用户点击按键或者屏幕的时候监听器会去调用相应功能的按键,分别是清零,0,1,2,3,4,5,6,7,8,9,+,-,*,/,=,@,左括号,右括号等。显示模块主要描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果和一些其他信息。
根据输入多项式的不同(比如输入3+8/2-9*8),需要对多项式进行分割,找出各个数字和符号并分别保存,再根据运算符的优先级来进行计算。

(1)初始化部分代码

Button btn_0;
Button btn_1;
Button btn_2;
Button btn_3;
Button btn_4;
Button btn_5;
Button btn_6;
Button btn_7;
Button btn_8;
Button btn_9;
Button btn_clear; 				//清除数据输入区
Button btn_del;   				//删除一位
Button btn_plus;				// +
Button btn_minus;				// -
Button btn_multiply	;			// *
Button btn_divide;				// /
Button btn_equal;				// =
Button btn_left;				//左括号
Button btn_right;				//右括号
private TextView et_input;		//数据输入区
private StringBuilder pending = new StringBuilder();	//数据输入区字符串private void initView() {btn_0 = (Button) findViewById(R.id.btn_0);btn_1 = (Button) findViewById(R.id.btn_1);btn_2 = (Button) findViewById(R.id.btn_2);btn_3 = (Button) findViewById(R.id.btn_3);......btn_0.setOnClickListener(this);	//设置按键监听btn_1.setOnClickListener(this);btn_2.setOnClickListener(this);btn_3.setOnClickListener(this);......}

(2)按钮键值判断及执行函数代码

public void onClick(View v) {int last = 0;if(pending.length()!=0) {last = pending.codePointAt(pending.length()-1);}switch (v.getId()) {case R.id.btn_0:pending = pending.append("0");et_input.setText(pending);break;case R.id.btn_1:pending = pending.append("1");et_input.setText(pending);break;case R.id.btn_2:pending = pending.append("2");et_input.setText(pending);break;case R.id.btn_3:pending = pending.append("3");et_input.setText(pending);break;case R.id.btn_4:pending = pending.append("4");et_input.setText(pending);break;case R.id.btn_5:pending = pending.append("5");et_input.setText(pending);break;case R.id.btn_6:pending = pending.append("6");et_input.setText(pending);break;case R.id.btn_7:pending = pending.append("7");et_input.setText(pending);break;case R.id.btn_8:pending = pending.append("8");et_input.setText(pending);break;case R.id.btn_9:pending = pending.append("9");et_input.setText(pending);break;......}}

(3)优先级判断函数

     使用集合定义符号的运算优先级,如果有括号,首先计算括号内的式子,然后按照先乘除、后加减的顺序进行计算。

4. 测试与分析

     测试过程:
     (1)安装相关软件,JDK安装配置
     (2)安装Java的JDK至默认路径 D:\Program Files\Java\,一般需要300M的空间,硬盘空间充足的话,所有组件全部安装。然后完成环境变量的配置。
     (3)配置Eclipse开发环境,设置代码字体大小,调整为12(或14),显示行号,代码格式化,改变一行能容纳的最大字符数,设置智能提示,运行eclipse.exe完成路径设置后,选择菜单Help—Install New Software…
在这里插入图片描述
     配置SDK路径:
     (1)安装java开发的JDK到本机,配置好环境变量。
     (2)解压Android SDK和Eclipse,配置Eclipse的SDK路径。
系统默认的是在线安装新的SDK组件,选取Use existing SDKs,然后点击下一步完成经一部的配置。完成配置到Windows里找到Android SDK Manager运行,检测是否可以正常启动,在启动之后,选择国内的镜像网站来进行下一步操作。
!配置完成的Eclipse配置完成的Eclipse
     总结:需要先安装JDK后配置环境变了,然后完成SDK的解压,解压有ADT的Eclipse,最后在Eclipse里重新配置SDK路径。就可以使用了。
至此Android开发环境就基本搭建完成了。
测试情况如下图:
图4 简易计算器的代码编译及运行
图5 简易计算器的计算演示

5. 参考文献

[1] 孙更新,宾晟,孙海轮.Java ME手机应用开发大全.北京:科学出版社,2008.6
[2]郭克华.JavaME移动开发实例精讲.北京:清华大学出版社,2010.1


http://chatgpt.dhexx.cn/article/iNecfar6.shtml

相关文章

java实现简易计算器

Java简易计算器 用java语言写的一个简易计算器,实现了最基本的、-、*、/ 运算。 先来看下效果: 界面简述: 整个面板的由一个JTextFiled组件16个JButton组件构成,外加一个JPanel组件存放16个按钮,其布局为4x4的网格…

做一个简易计算器(VB版)

今天小编来带大家用VB做一个简易计算器 废话不多说,下面就是具体步骤了 1、创建控件组的方法首先创建一个命令按钮,调整其大小(觉得合适就行),名称为Command1,Caption 属性为数字 0 ;然后进行…

简易计算器的设计_C#课程设计

以下内容可且仅可供参考,如有错误欢迎指正。 部分内容借鉴自百度 侵删致歉 位切换键盘的实现用了复杂的拖64给label的方法,此功能可以在自己计算机上的计算器里找到。 目录 一、设计简介 1.设计背景 2.开发工具及环境 二、需求分析 1.设计功能要求 …

Python制作简易计算器(GUI)---Tkinter

Python制作简易计算器(GUI)---Tkinter Tkinter简介Tkinter 与 PyQt5 的比较TkinterPyQt5 项目展示导入模块函数封装1. 运算公式的拼接与展示2. 将显示框的内容删除3. 使用eval()函数对表达式求值 主逻辑1. 布局窗口2. 布局表达式展示区域3. 布局按钮 代码…

自制个性计算器

一、布局文件xml的制作。 如图:是布局之后的一个效果图 完全可以自定义自己喜欢的各种类型的图片。 代码如下: 正所谓每一个鲜艳靓丽app背后都有成堆的代码支撑这句话是没有错的。由于没有长截屏软件只能用短截屏了,大家谅解一下&#…

C++简易计算器的实现

定义: 计算器是近代人发明的可以进行数字运算的机器。 也就是说,计算器不等同于算盘,前者能自行运算,后者只能简便计算过程,在古代,人们发明了许多计算工具,如算筹、算盘、计算尺等,随着社会的发展和科技的进步,计算…

制作简易计算器

简易计算器 效果展示图项目要求内容分析涉及函数 效果展示图 项目要求 制作简易计算器,使其能实现简单的加,减,乘,除运算。 1.在两个文本框中分别输入两个数字 2.输入完成后,再次点击加,减,乘&…

C# 制作简易计算器

前言:环境是vs 2022 1、打开vs2022后,右边导航栏选择创建新项目。 2、选择Windows窗体应用(.net Framework) 3、进入配置新项目界面(项目名称和位置可自行修改)点击创建 4、窗体From1即为我们要要编辑的位…

至简设计系列_简易计算器

–作者:小黑同学 本文为明德扬原创及录用文章,转载请注明出处! 1.1 总体设计 1.1.1 概述 计算器是近代人发明的可以进行数字运算的机器。现代的电子计算器能进行数学运算的手持电子机器,拥有集成电路芯片,但结构比电…

如何制作一个简易的计算器

今天,我们来学习如何完成一个简易计算器的功能吧! 一.布局 我们可以在HTML中使用CSS完成计算器的布局。接下来,我们便先来看看我们所要实现的效吧! 上图的计算器中,我们可以通过以下几个步骤完成对计算器的简单布局…

简易版计算器

这次我们来写一个简单的计算器案例 代码部分 HTML部分 首先设置一个基本样式,把我们需要的“计算”按钮,“-*/”四个计算符合,三个文本框准备好(两个用来输入数字进行计算,一个用来接收计算出来的结果),再为三个文…

java拦截器怎么实现

Java拦截器是一种对象拦截器,它可以拦截任何的类、方法和字段。拦截器还可以用于检查类是否已经加载以及对字段的访问权限是否符合规范。下面就让我们来了解一下 java拦截器怎么实现吧。 在 Java中,可以通过重写方法和代码块来实现拦截功能,但…

Java中的过滤器和拦截器

Java中的过滤器和拦截器 一.应用场景 拦截器应用场景 拦截器本质上是面向切面编程(AOP),符合横切关注点的功能都可以放在拦截器中来实现,主要的应用场景包括: 登录验证,判断用户是否登录。权限验证&…

拦截器(HandlerInterceptor)

目录 1 什么是拦截器 2 HandlerInterceptor和WebMvcConfigurer 2.1 HandlerInterceptor 2.2 WebMvcConfigurer 3 拦截器实现流程 1 什么是拦截器 拦截器是相对于Spring中来说的,它和过滤器不一样,过滤器的范围更广一些是相对于Tomcat容器来说的。拦…

用 Java 实现拦截器 Interceptor 的拦截功能

Java 里的拦截器是动态拦截 action 调用的对象,它提供了一种机制可以使开发者可以定义在一个 action 执行的前后执行的代码,也可以在一个 action 执行前阻止其执行,同时也提供了一种可以提取 action 中可重用部分的方式。在 AOP(A…

java-拦截器

(1)浏览器发送一个请求会先到Tomcat的web服务器 (2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态资源 (3)如果是静态资源,会直接到Tomcat的项目部署目录下去直接访问 (4)如果是动态资源,就需要交给项目的后台代码进行处理…

JAVA中的拦截器、过滤器

JAVA变成拦截器、过滤器 一、拦截器1、简介说明2、源码及方法说明3、拦截器自定义应用 二、过滤器1、简介说明2、源码及方法说明3、过滤器的自定义应用 三、Springboot中的WebMvcConfigurer1、简介2、主要方法3、添加拦截器 四、区别1、原理2、触发3、其他 一、拦截器 1、简介…

Java开发学习----拦截器(Interceptor)详细解析

一、拦截器概念 讲解拦截器的概念之前,我们先看一张图: (1)浏览器发送一个请求会先到Tomcat的web服务器 (2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态资源 (3)如果是静态资源,会直接到Tomcat的项目部署目录下去直接访…

JAVA三大器之拦截器

1,拦截器的概念 java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action 执行前阻止其执行,同时也提供了一种可以提取Action中可重用部分代码的方式。…

java之拦截器

java里的拦截器是动态 拦截action的web请求,而过滤器能够进行系统级别的过滤,即能够过滤所有的web请求。从这可以看出拦截器是有一定的局限性的。拦截器是基于jdk实现的动态代理,拦截器是动态拦截action调用的对象, 拦截器可以使得…