android实现简单计算器
前台代码如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"> <TextView
android:id="@+id/whiteblack"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:height="150dp"
android:textSize="30sp" /> <TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="*" > <TableRow
android:id="@+id/tableRow1"
android:layout_width="match_parent"
android:layout_height="wrap_content" > <Button
android:id="@+id/btnclear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_span=""
android:onClick="onClick"
android:text="CLEAR" /> <Button
android:id="@+id/btndelete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_span=""
android:onClick="onClick"
android:text="☜" />
</TableRow> <TableRow
android:id="@+id/tableRow2"
android:layout_width="match_parent"
android:layout_height="wrap_content" > <Button
android:id="@+id/btn7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="" /> <Button
android:id="@+id/btn8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="" /> <Button
android:id="@+id/btn9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="" /> <Button
android:id="@+id/btnchu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="÷" />
</TableRow> <TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" > <Button
android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="" /> <Button
android:id="@+id/btn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="" /> <Button
android:id="@+id/btn6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="" /> <Button
android:id="@+id/btnmul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="×" />
</TableRow> <TableRow
android:id="@+id/tableRow4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" > <Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="" /> <Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="" /> <Button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="" /> <Button
android:id="@+id/btnsub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="-" />
</TableRow> <TableRow
android:id="@+id/tableRow5"
android:layout_width="wrap_content"
android:layout_height="wrap_content" > <Button
android:id="@+id/btnpoint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="." /> <Button
android:id="@+id/btn_0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="" /> <Button
android:id="@+id/btnequ"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="=" /> <Button
android:id="@+id/btnadd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="+" />
</TableRow>
</TableLayout> </LinearLayout>
后台代码如下
package com.example.a19575.jiandanjisuanqi; import android.content.Context;
import android.content.DialogInterface;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast; public class MainActivity extends AppCompatActivity {
TextView textView;
Button btnclear;
Button btndelete;
Button btn7;
Button btn8;
Button btn9;
Button btn1;
Button btn2;
Button btn3;
Button btn4;
Button btn5;
Button btn6;
Button btn0;
Button btnjia;
Button btnjian;
Button btncheng;
Button btnchu;
Button btnpoint;
Button btnequ;
String str1="";
String str2="";
int flagdelete=;
int flagclear=;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(TextView)findViewById(R.id.whiteblack);
btnclear=(Button)findViewById(R.id.btnclear);
btndelete=(Button)findViewById(R.id.btndelete);
btn7=(Button)findViewById(R.id.btn7);
btn8=(Button)findViewById(R.id.btn8);
btn9=(Button)findViewById(R.id.btn9);
btn1=(Button)findViewById(R.id.btn1);
btn2=(Button)findViewById(R.id.btn2);
btn3=(Button)findViewById(R.id.btn3);
btn4=(Button)findViewById(R.id.btn4);
btn5=(Button)findViewById(R.id.btn5);
btn6=(Button)findViewById(R.id.btn6);
btn0=(Button)findViewById(R.id.btn_0);
btnjia=(Button)findViewById(R.id.btnadd);
btnjian=(Button)findViewById(R.id.btnsub);
btncheng=(Button)findViewById(R.id.btnmul);
btnchu=(Button)findViewById(R.id.btnchu);
btnpoint=(Button)findViewById(R.id.btnpoint);
btnequ=(Button)findViewById(R.id.btnequ); } public void onClick(View v)
{
switch (v.getId()){
case R.id.btn1:str1+="";break;
case R.id.btn2:str1+="";break;
case R.id.btn3:str1+="";break;
case R.id.btn4:str1+="";break;
case R.id.btn5:str1+="";break;
case R.id.btn6:str1+="";break;
case R.id.btn7:str1+="";break;
case R.id.btn8:str1+="";break;
case R.id.btn9:str1+="";break;
case R.id.btn_0:str1+="";break;
case R.id.btnadd:if(str1.contains("+")==false && str1.contains("-")==false && str1.contains("*")==false && str1.contains("/")==false)str1+="+";break;
case R.id.btnsub:if(str1.contains("+")==false && str1.contains("-")==false && str1.contains("*")==false&& str1.contains("/")==false)str1+="-";break;
case R.id.btnchu:if(str1.contains("+")==false && str1.contains("-")==false && str1.contains("*")==false&& str1.contains("/")==false)str1+="/";break;
case R.id.btnmul:if(str1.contains("+")==false && str1.contains("-")==false && str1.contains("*")==false&& str1.contains("/")==false)str1+="*";break;//保证只含有一个操作数
case R.id.btnpoint:str1+=".";break;
case R.id.btndelete:flagdelete= ;break;
case R.id.btnclear: flagclear=;break;
case R.id.btnequ: str1+="=";break;
}
if(flagdelete==&& str1.length()>=){//删除一个字符
str1=str1.substring(,str1.length()-);
flagdelete=;
}
if(flagclear==){//清空
str1="";
flagclear=;
}
if(str1.length()==&&(str1.charAt()=='+' || str1.charAt()=='-' || str1.charAt()=='*' || str1.charAt()=='/' || str1.charAt()=='.' || str1.charAt()=='=' )){//保证第一个字符只可以是数字
str1="";
}
if(str1.length()>=&&(str1.charAt(str1.length()-)=='-' || str1.charAt(str1.length()-)=='+' || str1.charAt(str1.length()-)=='/' || str1.charAt(str1.length()-)=='*' ||//确保只能输入一个运算符
str1.charAt(str1.length()-)=='=' || str1.charAt(str1.length()-)=='.')&& (str1.charAt(str1.length()-)=='-' ||str1.charAt(str1.length()-)=='+' ||
str1.charAt(str1.length()-)=='*' || str1.charAt(str1.length()-)=='/' || str1.charAt(str1.length()-)=='=' || str1.charAt(str1.length()-)=='.' )){
str1=str1.substring(,str1.length()-);
}
textView.setText(str1);
int t=;
int flag1=;
if(str1.length()>&&str1.charAt(str1.length()-)=='='){
char a[]=str1.toCharArray();
for(int i=;i<str1.length();i++) {
if (a[i] == '+' || a[i] == '-' || a[i] == '*' || a[i] == '/') {//得到运算符的位置
t = i;
break;
}
}
double a2;
double b2;
try{
a2 = Double.parseDouble(str1.substring(, t ));
b2 = Double.parseDouble(str1.substring(t + , str1.length() - ));
if (str1.contains("+"))
str2 = String.valueOf(a2 + b2);
if (str1.contains("-"))
str2 = String.valueOf(a2 - b2);
if (str1.contains("*"))
str2 = String.valueOf(a2 * b2);
if (str1.contains("/") && b2 != )
str2 = String.valueOf(a2 / b2);
if (str1.contains("/") && b2 == )
flag1 = ;
}catch (Exception e)
{
textView.setText("error");;
} if(flag1==){
textView.setText("分母不可为零");
flag1=;
}
else
textView.setText(str1+str2);
} }
}
截图如下

总结:该计算器是我暑假随便写的一个app,只实现了两个操作数的运算,功能简单,比较粗糙,实现了对一些常见异常的捕获,第一次写博客,请包涵QAQ。。。。
android实现简单计算器的更多相关文章
- 菜鸟学Android编程——简单计算器《一》
菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...
- 简单计算器 安卓 Android 作业
Android老师布置的课程作业——简单计算器 功能要求实现四则运算,参考界面见下图: 首先给各位老铁提供apk安装包以及项目压缩包,略表诚意~ github地址:https://github.com ...
- Android 简单计算器实现源码
1.string.xml代码 <?xml version="1.0" encoding="utf-8"?> <resources> &l ...
- Android发展简单介绍
Android一词的本义指“机器人”,同一时候也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,号称是首个为移动 ...
- 1.C#WinForm基础制作简单计算器
利用c#语言编写简单计算器: 核心知识点: MessageBox.Show(Convert.ToString(comboBox1.SelectedIndex));//下拉序号 MessageBox.S ...
- Android 实现简单音乐播放器(二)
在Android 实现简单音乐播放器(一)中,我介绍了MusicPlayer的页面设计. 现在,我简单总结一些功能实现过程中的要点和有趣的细节,结合MainActivity.java代码进行说明(写出 ...
- Android 实现简单音乐播放器(一)
今天掐指一算,学习Android长达近两个月了,今天开始,对过去一段时间的学习收获以及遇到的疑难杂症做一些总结. 简单音乐播放器是我自己完成的第一个功能较为完整的APP,可以说是我的Android学习 ...
- Android课程---Android Studio简单设置
Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings-->Appearance-->Theme, ...
- PAT 06-1 简单计算器
想看一般简单计算器实现的看客不好意思了,这不是你想要点东西,此处题设为“只能进行加减乘除”.“都是整数”.”优先级相同“和"从左到右".此题来自PAT(http://www.pat ...
随机推荐
- Swift语言概览
Swift语言概览 关于 这篇文章简要介绍了苹果于WWDC 2014公布的编程语言--Swift. 前言 在这里我觉得有必要提一下Brec Victor的Invent ...
- Java for LeetCode 083 Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...
- Algorithm: dynamic programming
1. Longest Increasing Subsequence (LIS) problem unsorted array, calculate out the maximum length of ...
- JMS消息可靠机制
ActiveMQ消息签收机制: 客戶端成功接收一条消息的标志是一条消息被签收,成功应答. 消息的签收情形分两种: 1.带事务的session 如果session带有事务,并且事务成功提交,则消息被自动 ...
- python注释行与段落
注释行:# 注释段:‘’‘ ’‘’
- 脚本简介jQuery微信开放平台注册表单
脚本简介jQuery微信开放平台注册表单是一款仿微信开放平台的选项卡带步骤的注册表单验证jQuery代码 分享自:http://www.huiyi8.com/jiaoben/ 下载地址:http:// ...
- laravel基础课程---11、lavarel的ajax操作(ajax优劣势是什么)
laravel基础课程---11.lavarel的ajax操作(ajax优劣势是什么) 一.总结 一句话总结: 优势:用户友好度:异步通信,不会频繁刷新页面,用户友好度比较高 优势:减轻数据库压力 缺 ...
- codeforces 558C C. Amr and Chemistry(bfs)
题目链接: C. Amr and Chemistry time limit per test 1 second memory limit per test 256 megabytes input st ...
- P1150 Peter的烟
题目描述 Peter有n根烟,他每吸完一根烟就把烟蒂保存起来,k(k>1)个烟蒂可以换一个新的烟,那么Peter最终能吸到多少根烟呢? 输入输出格式 输入格式: 每组测试数据一行包括两个整数n( ...
- hdu畅通工程
传送门 畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...