Andriod设计简易计算器

2 篇文章 0 订阅
订阅专栏

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

Android Studio 制作简易计算器,GitHub标星1w的Android架构师必备技能
m0_60721823的博客
03-24 1077
>Mainactivity的代码://判断et中是否清空@Override//实例化对象//设置按钮的点击事件@Overridestr=“”;break;str=“”;break;str=“”;break;
第一个Android项目--简易计算器设计与实现
热门推荐
大灰狼博客
05-07 5万+
这个简易计算器的实现我是参照慕课网上的视频课程学习的,下面梳理我的开发过程以及DEBUG
Android开发学习实现简单计算器
08-19
主要为大家详细介绍了Android实现一个简单计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
基于51单片机的简易计算器设计(原理图+仿真+源代码+参考论文)
u012759563的博客
02-26 1627
设计以51单片机为核心,矩阵键盘输入数字,通过1602显示屏显示计算结果,能够实现整数的加、减、乘、除四则运算,具备清除功能。
Android开发——实现Android简易计算器
newAppZ
12-14 2657
计算器输入的字串属于中缀表达式,即Infix Expression,例如:2+3*5-6。 然而对于程序来说,要处理这样的表达式比较困难,因为不知道该何时处理表达式中的某个子表达式。因此,需要将这样的表达式转换成后缀表达式(Suffix Expression),然后通过程序逻辑将程序结果计算出来。 下面看其一个转换的例子(取自维基百科): 按照算法逻辑,我们可以将2+3*
Android简易计算器(二)——关键逻辑讲解
zwkkkk1的博客
05-11 1970
  最近在学安卓的相关知识,第一个demo做了一个简易计算器,功能仿手机上自带的计算器,没有加括号,简单的四则运算,支持长表达式运算。这次讲解每个按键中需要处理的逻辑。 数字键(btn_0~btn_9) //按下数字函数 private void num_down(String num) { String strEdit = txt_edit.getText().toS...
Android做一个简单的计算器
Mhaowei_的博客
06-21 3390
20200617 今天实现了一个能加减乘除的简单计算器,界面大致如下: 首先是画界面,挺简单的,就是一个四个竖直布局的LinerLayout加一个TextView。我看到网上很多计算器都是用的EditView,个人感觉没有必要,毕竟只是个按键输入的计算器,又不需要自己键盘手动输入。但是有一点就是=号键,本来是在最后一个LinerLayout里面的,但是我不管用什么办法总是填不满空缺,会导致最后一列较其他列短一些,所以将它单独拉出来布局了。(手动设置高度应该可以做到,但是感觉可能无法适配不同机型。) 具体布
android计算器设计步骤,Android Studio的简易计算器界面设计
weixin_31202821的博客
06-04 2604
一、题目1、如图所示(实际设计,类似此界面样式即可,全屏时,按钮将会纵向拉伸),利用网格布局管理器设计一个居中、满屏计算器,项目名称:clc666b;(666,改成自己的实际编号)2、加、乘分别用2个单选按钮进行选择;3、为clc666b编写程序(clc666a不需要编程,只设计界面即可),根据选择的加(乘)单选按钮,实现两个数的加法和乘法的简单计算。4、为了简化程序设计,上方的数据区也可以设计成...
Android计算器简单实现及代码分析
qq_56785698的博客
08-01 4459
一、UI布局及代码 页面效果 布局代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertic
Android开发——简单计算器实现
Q1368089323的博客
06-15 4919
计算器项目,要求实现加、减、乘、除、求倒数、求平方根等简单运算。 真机调试结果如下图: 布局文件:main_activity.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="
Android studio设计简易计算器
08-26
主要为大家详细介绍了Android studio设计简易计算器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
基于Android studio的简易计算器设计.rar
10-28
基于Android设计的简易计算机系统,可实现基础计算功能,比如加减乘除等。主要设计Java和xml语言的编写。
android实现简易计算器
08-27
主要为大家详细介绍了android实现简易计算器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
简单计算器UML类图
人生的意義在於修煉!修煉之路~
09-02 5023
 上图就是简单计算器UML类图,通过简单工厂模式来创造各种不同的运算类来提供运算能力,通过封装、继承、多态降低程序耦合度来提供较高的可维护性,可复用性和可扩展性。 其中所谓 1.可维护性:要修改哪里就可单独修改哪里,不会牵涉到其它非相关部分,导致一起再编译 2.可复用性:其中的比如运算类(运算逻辑)可完整搬运到其它程序或平台上,而不必修改 3.可扩展性:当要添加新的运算类,比如开平方或...
android开发自制计算器测试图,从0开始自制计算器!
weixin_27283495的博客
05-26 532
先看看效果吧:很炫酷吧?想不想要?想要吧.当然作者知道你们肯定想.不然也不会点进来对不对.好.进入正题.1.概述这个是仿照win10自带的计算器制作的简化版本.是用Qt做的,直接把整个表达式输入然后得出计算结果.主要分为三部分.界面部分,事件处理部分与表达式处理部分.界面部分就是看到的计算器,包括标题栏,中间的输出框,还有各个按键.事件处理就是处理对应的鼠标与键盘事件.表达式处理部分就是处理整个输...
Android基础-内存泄漏
最新发布
层楼终究误少年
06-01 662
Android开发中,内存泄漏是一个常见且重要的问题,它不仅影响应用的性能,还可能导致应用崩溃。因此,分析和解决内存泄漏问题对于提升应用的稳定性和用户体验至关重要。内存泄漏是Android开发中常见且重要的问题之一。通过合理的内存管理、使用适当的工具进行内存泄漏分析和解决常见的内存泄漏原因,我们可以有效地提升Android应用的稳定性和用户体验。内存泄漏是指在程序运行过程中,由于错误的内存管理导致无法释放已经不再使用的内存资源,从而造成内存消耗过大或者内存溢出的问题。二、内存泄漏的常见原因。
详解 QtAndroid::requestPermissionsSync
github_37290846的博客
05-27 401
在这个示例中,我们首先创建了一个包含所需权限的字符串列表,然后使用 QtAndroid::requestPermissionsSync 函数同步请求这些权限。根据用户的响应,我们可以决定是继续执行需要权限的操作,还是处理权限被拒绝的情况。然而,QtAndroid::requestPermissionsSync 提供了一个简单的同步解决方案,特别适用于某些需要立即获取权限的场景。最后,由于 Qt 和 Android 平台的不断更新,建议查阅最新的 Qt 文档以获取最准确和最新的信息。
安卓手机APP开发___设置闹钟
红孩儿编程大师
05-29 1187
闹钟(基于 AlarmManager 类)为您提供了一种在应用生命周期之外 执行基于时间的操作的方法。例如,您可以使用闹钟启动长时间运行 的操作,如每天启动一次服务以下载天气预报。
Android USB调试模式下自动上下滑动(Go实现)
听我一言的博客
05-28 582
Golang实现通过ADB控制手机自动上下滑动
android studio设计简易计算器
11-09
为了在Android Studio中设计一个简易计算器,您需要遵循以下步骤: 1.创建一个新的Android Studio项目,命名为clc666b。 2.在activity_main.xml文件中,使用网格布局管理器来设计一个居中、满屏计算器。您可以使用按钮、文本框和其他UI元素来实现这个界面。 3.在MainActivity.java文件中,编写代码来实现计算器的逻辑。您需要使用单选按钮来选择加法或乘法,然后根据用户的选择来执行相应的计算。 4.测试您的应用程序,确保它能够正确地执行加法和乘法计算。 下面是一个简单的范例代码,可以帮助您开始编写您的应用程序: ```java public class MainActivity extends AppCompatActivity { private EditText num1EditText; private EditText num2EditText; private TextView resultTextView; private RadioButton addRadioButton; private RadioButton multiplyRadioButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); num1EditText = findViewById(R.id.num1EditText); num2EditText = findViewById(R.id.num2EditText); resultTextView = findViewById(R.id.resultTextView); addRadioButton = findViewById(R.id.addRadioButton); multiplyRadioButton = findViewById(R.id.multiplyRadioButton); Button calculateButton = findViewById(R.id.calculateButton); calculateButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { double num1 = Double.parseDouble(num1EditText.getText().toString()); double num2 = Double.parseDouble(num2EditText.getText().toString()); double result = 0; if (addRadioButton.isChecked()) { result = num1 + num2; } else if (multiplyRadioButton.isChecked()) { result = num1 * num2; } resultTextView.setText(String.valueOf(result)); } }); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 2017年全国大学生电子设计竞赛综合测评——复合信号发生器——电路Multisim仿真(1) 39632
  • 2017年、2019年全国大学生电子设计竞赛综合测评——常用电路Multisim仿真——方波、三角波振荡电路 34563
  • Quartus ii 与 Verilog入门教程(1)——Verilog实现8位计数器 33587
  • 2017年全国大学生电子设计竞赛综合测评题目解析——Multisim仿真 25594
  • Verilog学习笔记——有符号数的乘法和加法 23598

分类专栏

  • FIR滤波器 付费 9篇
  • 电路设计,电子设计竞赛 付费 8篇
  • 实习秋招 45篇
  • 芯片 1篇
  • 嵌入式 2篇
  • verilog刷题 2篇
  • VIVADO HLS 7篇
  • MATLAB 6篇
  • FPGA图像处理 3篇
  • DDS信号发生器 3篇
  • Verilog 9篇
  • stm32f103 1篇
  • FPGA 43篇
  • 编码 4篇
  • 通信 9篇
  • android 2篇

最新评论

  • Xilinx FPGA异步复位同步释放——同步后的复位当作同步复位还是异步复位?【FPGA探索者】

    Starry丶: 同步化后采用同步复位,会不会时钟采样到复位信号上升沿导致亚稳态?

  • Xilinx FPGA异步复位同步释放——同步后的复位当作同步复位还是异步复位?【FPGA探索者】

    要你命3OOO: 二章节的1、2代码是一样的?

  • 2017年全国大学生电子设计竞赛综合测评题目解析——2022更新(方波生成,方波分频,三角波,加法器,滤波器,正弦波))

    2201_75418578: 求仿真1065039564@qq.com

  • 2017年全国大学生电子设计竞赛综合测评题目解析——2022更新(方波生成,方波分频,三角波,加法器,滤波器,正弦波))

    dhdundis: 求仿真文件2317235486@qq.com

  • 2017年全国大学生电子设计竞赛综合测评题目解析——2022更新(方波生成,方波分频,三角波,加法器,滤波器,正弦波))

    涂涂涂涂涂涂子: 想知道vo1pp这种端口是怎么放置的

大家在看

  • go 命令行工具 cobra
  • 毕业设计:大药房管理系统,基于java+springboot+mysql 698
  • 2023-2025年最值得选择的Java毕业设计选题大全:1000个热门选题推荐✅✅✅
  • 网站建设方案书 77
  • 【气象常用】剖面图 357

最新文章

  • 数字IC笔试题——门控时钟与控制信号电平、与门门控、或门门控、上升沿门控、下降沿门控
  • 应届生谈薪技巧和注意事项,怎么为自己多争取1~2k(FPGA,芯片谈薪,数字IC,嵌入式,模拟IC,FPGA探索者)
  • FPGA数字IC刷题58道Verilog题解代码及视频讲解【FPGA探索者】【同步/异步FIFO】【跨时钟】
2024年2篇
2022年15篇
2021年27篇
2020年24篇
2019年11篇
2018年10篇
2017年1篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源金鸡奖2021颁奖典礼张姓男宝宝起名2020周易起名要领你长得好像我爸爸长生不老的意思二哥二嫂炒股手机软件云平台起名起名大全天气互联网平台起名大全集网上免费为宝宝起名作文辅导班起名心灵花园五行起名是缺啥补啥吗属蛇的开公司起名大全起名大全 大师起名喜用神免费周易起名软件免费给姓李的女宝宝起名他在逆光中告白电视剧免费观看中式灯具起名女孩子能起什么名字?孙颖莎个人资料简介金融贷款公司起名小兰看一本故事书应用兔哈尔滨到阿城张柏芝第三胎和谁生的www.36ccc.com润滑油品牌起名大全淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化