博客记录只是为了做笔记,今天练习了计算器demo,编程思路过程如下:

1. 布局:Button点击事件

2.计算功能的实现

setText(data)方法:把data放进布局里

stringBuffer.append(data);//把data存入缓冲区,实现连续输入
stringBuffer.delete(0,stringBuffer.length());//public delete(int start, int end)移除此序列的子字符串中的字符。
String str = stringBuffer.toString();//用字符串接收了Buffer里面的字符串
String result = Double.toString(calc.calculate(str));//把double类型的数据(calc.calculate(str))强转成double类型

calculate(String str)是封装类Calculator里的方法

stringBuffer.replace(0,stringBuffer.length(),result);
//replace(int start, int end, String str)使用给定String中的字符替换此序列的子字符串中的字符。

3.Bug修复

1)点击按钮 “C” ,本该清空,出现闪退,日志报错:EmptyStackException

原因:运行的时候忘记break了,接着运行下面代码的时候,因为计算了一个空字符串会导致程序崩掉。

修复:加上break;

2)当除数为0的时候,闪退,日志报错:Division by zero

原因:除法没有判断除数是否为零

修复:加判断

case R.id.div:textView.setText("");String strDiv = stringBuffer.toString();if((strDiv.lastIndexOf('+') == strDiv.length() - 1)|| (strDiv.lastIndexOf('-') == strDiv.length() - 1)|| (strDiv.lastIndexOf('*') == strDiv.length() - 1)|| (strDiv.lastIndexOf('/') == strDiv.length() - 1)){Log.i("error","不能连续输入运算符");}else {//textView.setText("不能连续输入运算符");stringBuffer.append("/");}break;

3)不允许连续输入小数点和运算符

修复:都判断一下

case R.id.point:textView.setText("");String strPoint = stringBuffer.toString();if((strPoint.lastIndexOf('+') == strPoint.length() - 1)|| (strPoint.lastIndexOf('-') == strPoint.length() - 1)|| (strPoint.lastIndexOf('*') == strPoint.length() - 1)|| (strPoint.lastIndexOf('/') == strPoint.length() - 1)|| (strPoint.lastIndexOf('.') == strPoint.length() - 1)){Log.i("error","不能输入小数点");}else {//textView.setText("不能连续输入小数点");stringBuffer.append(".");}break;

4)去掉EditView的红线,修改光标的颜色

修复:已修复

去红线:android:background="@null"

修改光标颜色:https://blog.csdn.net/nonecode/article/details/81953767

4.成果展示

下载链接:https://download.csdn.net/download/s_jggod/11161745

新进入csdn,这是上传的第一个demo,不知道为什么需要积分才能下载,欢迎私信

小小白的Android入门之计算器学习相关推荐

  1. Android开发的经典入门教材和学习…

    Android开发的经典入门教材和学习路线? 1.想利用寒假期间学习Android开发,了解到应该先学习Java,不知道选哪本书入门,学习Java和Android有什么经典教材,适合初学者.(有C++ ...

  2. Android入门之简易计算器(一)

    Android Android入门之简易计算器(一) 文章目录 Android Android入门之简易计算器(一) @[TOC](文章目录) 前言 一.项目结构 二.界面显示 三.前端界面 1.界面 ...

  3. 【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity

    问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的. 人与人之 ...

  4. Android 开源项目及其学习

    Android 系统研究:http://blog.csdn.net/luoshengyang/article/details/8923485 Android 腾讯技术人员博客 http://hukai ...

  5. 小猪的Android入门之路 day 1

    小猪的Android入门之路 Day 1 Android相关背景与开发环境的搭建 ------转载请注明出处:coder-pig 本节引言: 随着社会经济的发展,移动互联网的越来越热,手机APP开发显 ...

  6. android计算器弹窗,android实现简易计算器

    本文实例为大家分享了android实现简易计算器展示的具体代码,供大家参考,具体内容如下 效果图: 一.如图,首先布局计算器主页显示 activity_main.xml xmlns:tools=&qu ...

  7. android 教程概要,Android精通教程-第一节Android入门简介

    前言 大家好,我是 Vic,今天给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cea ...

  8. 我认为的android入门学习策略

    我认为的android入门学习策略 初级阶段要学习的内容 1.自己配置环境.  全部采用做新版本 SDK,ADT,ECLIPSE,JDK 2.编写或者运行教学示例.  2.1这时间主要运行的示例如HE ...

  9. Android入门教程:ConstraintLayout约束布局

    原文首发自掘金芦苇APP团队,转载到自己小号上再发一遍~ 翻译By Leelion6.关于 ConstraintLayout 的文章其实已经不少了,不过看到这篇文章写的很有趣,以及在翻译的过程中,感受 ...

最新文章

  1. OSI分层和五层协议
  2. php mysql 绑定变量,在MYSQL中,怎么用PDO绑定变量的方式插入数据?
  3. .net pdf转图片_图片转PDF怎么转?推荐两种图片转PDF方法
  4. 数据库垂直拆分和水平拆分
  5. opencv mat初始化_【OpenCV入门之十二】看起来一样的图像竟然存在这么大的差别!...
  6. 获取和保存当前屏幕的截图 实现的C++代码如下
  7. 输入框回车多个文本_输入框测试用例,你真的了解输入框测试嘛!
  8. 0.typescript-相关文档
  9. sql初学者指南_使用tSQLt框架SQL单元测试面向初学者
  10. django-pure-pagination
  11. PHP网站开启gzip压缩,PHP网站程序中开启Gzip压缩的两种方法
  12. 基于Matlab的表面肌电信号处理软件设计与开发
  13. 计算机声音管理器不见了,电脑Realtek高清晰音频管理器不见了怎么办
  14. 计算机中word繁体字转简体字,word简繁体怎么转换的两种方法
  15. kdj超卖_KDJ超买超卖指标正确用法
  16. 电脑上的歌曲怎么传到苹果手机上面,怎么把电脑上的歌导入苹果手机
  17. 用c++写bilibili番剧抢楼程序
  18. c语言rgb数值颜色渐变算法,颜色渐变算法
  19. 一维搜索方法c语言,优化方法基础系列-非精确的一维搜索技术
  20. 移动跨平台技术方案浅析

热门文章

  1. js两种拼接字符串方法
  2. 相见恨晚的18本IT界经典必看的书籍
  3. 微信小程序返回上一页各种方法
  4. 【仿微信朋友圈时间,几天前,几分钟前,显示几周前】
  5. linux中时间转换date
  6. 说实话,Jenkins 真得牛逼!只是你不会用而已~
  7. 7z压缩比最高,rar次之,zip最低
  8. mysql在centos下改24小时制
  9. 应用软件安全编程概述
  10. 一题乱作出来的题? ?