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 ...
随机推荐
- php 身份证号码获取星座和生肖
发布:thatboy 来源:Net [大 中 小] 本文介绍下,php用身份证号码获取星座和生肖的方法,一个简单的php实例,从身份证号码中取得星座与生肖信息,有兴趣的朋友参考研究下吧.本 ...
- 窥探 Swift 之别具一格的 Struct 和 Class
说到结构体和类,还是那句话,只要是接触过编程的小伙伴们对这两者并不陌生.但在Swift中的Struct和Class也有着令人眼前一亮的特性.Struct的功能变得更为强大,Class变的更为灵活.St ...
- Express的基本使用
前言 列表项目Express是一个简介而灵活的node.js Web应用框架提供的一系列强大特性帮助你创建各种 Web 应用,和丰富的HTTP工具. 正文 一个简单的express框架实例 ``` / ...
- 《机器学习实战》学习笔记第七章 —— AdaBoost元算法
主要内容: 一.提升方法与AdaBoost算法的简介 二.AdaBoost算法 三.代码解释 一.提升方法与AdaBoost算法的简介 1.提升方法:从弱学习算法出发,反复学习,得到一系列弱分类器(又 ...
- FZU2013 A short problem —— 线段树/树状数组 + 前缀和
题目链接:https://vjudge.net/problem/FZU-2013 Problem 2013 A short problem Accept: 356 Submit: 1083Ti ...
- BZOJ 3251 树上三角形:LCA【构成三角形的结论】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3251 题意: 给你一棵树,n个节点,每个点的权值为w[i]. 接下来有m个形如(p,a,b ...
- 第三届蓝桥杯决赛c++b组
1.星期几 [结果填空] (满分5分) 1949年的国庆节(10月1日)是星期六. 今年(2012)的国庆节是星期一. 那么,从建国到现在,有几次国庆节正好是星期日呢? 只要 ...
- java中相对路径加载xml
一.xml文件一般的存放位置有三个: 1.放在WEB-INF下: 2.xml文件放在/WEB-INF/classes目录下或classpath的jar包中: 3.放在与解析它的java类同一个包中,不 ...
- 损失函数(Loss function) 和 代价函数(Cost function)
1损失函数和代价函数的区别: 损失函数(Loss function):指单个训练样本进行预测的结果与实际结果的误差. 代价函数(Cost function):整个训练集,所有样本误差总和(所有损失函数 ...
- MYSQL_与excel结合在excel中用&连接符快速创建表头_20161125
excel &连接符快速创建表头 复制c列内容 CREATE TABLE A0001restaurant ( #用户明细表 城市 ), 区块 ), 用户ID ), 用户名称 ), 用户地址 ) ...