java编写安卓计算器_安卓实现简单计算器

实现一个计算器 ,有加减乘除功能,小数点和清除操作。

这是学校安卓老师布置的作业,计算器说实话实现起来挺多坑的,之前在算法比赛中见过这种题,用来熟悉安卓的布局的确是挺好的一个小案例,不过需要挺多逻辑处理!

下面本人的实现思路:

布局方面:使用网格GridLayout布局,除了显示数据的textView,其他都是button,使用xml设置好,添加到res。

事件方面:通过findViewBy在R.id.xxx,拿到上面添加到resource库里面的控件,创建对象并添加对应的点击处理方法。这里我是把所有按钮都放在一个click类处理,通过switch对比传进来的view(即button)是哪个id,做出不同的点击方法。

下面说说计算器实现要考虑的点

1+1 =2 这时候2可以继续加上去或其他符号操作

1 + * -连续点几个操作符,只能筛选出最后一个操作符,并且可以继续计算操作

1 + 然后按等号,应该变成2,1 - 然后按等号应该变成0,乘除也一样。

做除法运算的时候,分母不能为0,否则输出error,window和ios计算器都会提示

小数点的处理

下面先上XML布局代码 ,挺多重复东西的,可以直接拉下去。

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:theme="@style/AppTheme.AppBarOverlay">

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

android:background="?attr/colorPrimary"

app:popupTheme="@style/AppTheme.PopupOverlay"

/>

android:id="@+id/fab"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="bottom|end"

android:layout_margin="@dimen/fab_margin"

app:srcCompat="@android:drawable/ic_dialog_email" />

//下面才是重点

xmlns:tools="http://schemas.android.com/tools"

android:layout_marginLeft="64dp"

android:layout_marginTop="200dp"

android:id="@+id/GridLayout1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:columnCount="4"

android:orientation="horizontal"

android:rowCount="6" >

android:id="@+id/resultText"

android:layout_columnSpan="4"

android:layout_gravity="fill"

android:layout_marginLeft="5dp"

android:layout_marginRight="5dp"

android:background="@android:color/holo_blue_bright"

android:textColor="@android:color/white"

android:textFontWeight="0.5"

android:text="0"

android:textSize="50sp" />

android:id = "@+id/buttonBack"

android:layout_columnSpan="2"

android:layout_gravity="fill"

android:text="回退" />

android:id = "@+id/buttonClear"

android:layout_columnSpan="2"

android:layout_gravity="fill"

android:text="清空" />

android:id = "@+id/plus"

android:text="+" />

android:id = "@+id/one"

android:text="1" />

android:id = "@+id/two"

android:text="2" />

android:text="3" />

android:id = "@+id/subtract"

android:text="-" />

android:id = "@+id/four"

android:text="4" />

android:id = "@+id/five"

android:text="5" />

android:id = "@+id/six"

android:text="6" />

android:id = "@+id/multiply"

android:text="*" />

android:id = "@+id/seven"

android:text="7" />

android:id = "@+id/eight"

android:text="8" />

android:id = "@+id/nine"

android:text="9" />

android:id = "@+id/divide"

android:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值