热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

简单实现Android计算器功能

这篇文章主要为大家详细介绍了自己动手实现的Android计算器功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

自己写的安卓的计算器:
注:这个是在mac中开发的,如果要在windows的eclipse中运行可能会出现路径问题,解决办法从windows中已有的安卓工程根目录下复制一下classpath文件,然后复制粘贴覆盖掉这个工程根目录里面的路径文件,再导入工程应该就可以打开了。
 安卓计算器Android calculator

工程下载链接:https://github.com/jiangxh1992/Android-Calculator

代码:

package com.example.calculator; 
 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
 
public class MainActivity extends Activity implements OnClickListener{ 
 //按钮 
 Button btn_1,btn_2,btn_3, 
   btn_4,btn_5,btn_6, 
   btn_7,btn_8,btn_9, 
   btn_10,btn_11,btn_12, 
   btn_13,btn_14,btn_15, 
   btn_16,btn_17,btn_18, 
   btn_19,btn_20,btn_21,btn_22; 
 //用于判断是否需要重新输入 
 boolean restart; 
 //屏幕上数字的正负状态 
 int front; 
 //操作数与操作符 
 float operator1,operator2; 
 int symbol;//jre1.6不支持switch(字符串) 
 //"+、—、*、/、x^y、/x、sinx、cosx"-->1、2、3、4、5、6、7、8 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_main); 
  //初始化操作数(默认为0)操作符(默认为+) 
  operator1=0; 
  operator2=0; 
  restart=true; 
  frOnt=0;//默认为正数 
  TextView txt=(TextView) findViewById(R.id.textView1); 
  txt.setText("00"); 
  //获取button对象 
  btn_1= (Button)findViewById(R.id.button1); 
  btn_2= (Button)findViewById(R.id.button2); 
  btn_3= (Button)findViewById(R.id.button3); 
  btn_4= (Button)findViewById(R.id.button4); 
  btn_5= (Button)findViewById(R.id.button5); 
  btn_6= (Button)findViewById(R.id.button6); 
  btn_7= (Button)findViewById(R.id.button7); 
  btn_8= (Button)findViewById(R.id.button8); 
  btn_9= (Button)findViewById(R.id.button9); 
  btn_10= (Button)findViewById(R.id.button10); 
  btn_11= (Button)findViewById(R.id.button11); 
  btn_12= (Button)findViewById(R.id.button12); 
  btn_13= (Button)findViewById(R.id.button13); 
  btn_14= (Button)findViewById(R.id.button14); 
  btn_15= (Button)findViewById(R.id.button15); 
  btn_16= (Button)findViewById(R.id.button16); 
  btn_17= (Button)findViewById(R.id.button17); 
  btn_18= (Button)findViewById(R.id.button18); 
  btn_19= (Button)findViewById(R.id.button19); 
  btn_20= (Button)findViewById(R.id.button20); 
  btn_21= (Button)findViewById(R.id.button21); 
  btn_22= (Button)findViewById(R.id.button22); 
  //注册点击事件 
  btn_1.setOnClickListener(this); 
  btn_2.setOnClickListener(this); 
  btn_3.setOnClickListener(this); 
  btn_4.setOnClickListener(this); 
  btn_5.setOnClickListener(this); 
  btn_6.setOnClickListener(this); 
  btn_7.setOnClickListener(this); 
  btn_8.setOnClickListener(this); 
  btn_9.setOnClickListener(this); 
  btn_10.setOnClickListener(this); 
  btn_11.setOnClickListener(this); 
  btn_12.setOnClickListener(this); 
  btn_13.setOnClickListener(this); 
  btn_14.setOnClickListener(this); 
  btn_15.setOnClickListener(this); 
  btn_16.setOnClickListener(this); 
  btn_17.setOnClickListener(this); 
  btn_18.setOnClickListener(this); 
  btn_19.setOnClickListener(this); 
  btn_20.setOnClickListener(this); 
  btn_21.setOnClickListener(this); 
  btn_22.setOnClickListener(this); 
 } 
 @Override 
 //点击事件处理 
 public void onClick(View btn) { 
  //获取文本框 
  TextView txt=(TextView) findViewById(R.id.textView1); 
  //文本框内容 
  String text=(String) txt.getText(); 
  float value=Float.parseFloat(text); 
  System.out.println(value); 
  switch(btn.getId()){ 
  //数字 
  case R.id.button1: 
   if(restart){ 
    txt.setText("1"); 
    restart=false;} 
   else 
   txt.setText(text+"1"); 
   break; 
  case R.id.button2: 
   if(restart){ 
    txt.setText("2"); 
    restart=false;} 
   else 
   txt.setText(text+"2"); 
   break; 
  case R.id.button3: 
   if(restart){ 
    txt.setText("3"); 
    restart=false;} 
   else 
   txt.setText(text+"3"); 
   break; 
  case R.id.button4: 
   if(restart){ 
    txt.setText("4"); 
    restart=false;} 
   else 
   txt.setText(text+"4"); 
   break; 
  case R.id.button5: 
   if(restart){ 
    txt.setText("5"); 
    restart=false;} 
   else 
   txt.setText(text+"5"); 
   break; 
  case R.id.button6: 
   if(restart){ 
    txt.setText("6"); 
    restart=false;} 
   else 
   txt.setText(text+"6"); 
   break; 
  case R.id.button7: 
   if(restart){ 
    txt.setText("7"); 
    restart=false;} 
   else 
   txt.setText(text+"7"); 
   break; 
  case R.id.button8: 
   if(restart){ 
    txt.setText("8"); 
    restart=false;} 
   else 
   txt.setText(text+"8"); 
   break; 
  case R.id.button9: 
   if(restart){ 
    txt.setText("9"); 
    restart=false;} 
   else 
   txt.setText(text+"9"); 
   break; 
  case R.id.button10: 
   if(restart) 
    txt.setText("00"); 
   else 
   txt.setText(text+"0"); 
   break; 
   //+ 
  case R.id.button11: 
   symbol=1; 
   operator1=value; 
   restart=true; 
   break; 
   //- 
  case R.id.button12: 
   symbol=2; 
   operator1=value; 
   restart=true; 
   break; 
   //-/+ 
  case R.id.button13: 
   if(restart){ 
    txt.setText("-"); 
    frOnt=1;} 
   else if(frOnt==0){ 
    txt.setText("-"+text); 
    frOnt=1;} 
   else if(frOnt==1){ 
    txt.setText(text.substring(1)); 
    frOnt=0; 
   } 
   break; 
   //* 
  case R.id.button14: 
   symbol=3; 
   operator1=value; 
   restart=true; 
   break; 
   // / 
  case R.id.button15: 
   symbol=4; 
   operator1=value; 
   restart=true; 
   break; 
   //C 
  case R.id.button16: 
   txt.setText("00"); 
   restart=true; 
   break; 
   // . 
  case R.id.button17: 
   if(restart) 
    txt.setText("."); 
   else 
   txt.setText(text+"."); 
   restart=false; 
   break; 
   //= 
  case R.id.button18: 
   restart=true; 
   switch(symbol){ 
   case 1: 
    txt.setText(String.valueOf(operator1+value)); 
    break; 
   case 2: 
    txt.setText(String.valueOf(operator1-value)); 
    break; 
   case 3: 
    txt.setText(String.valueOf(operator1*value)); 
    break; 
   case 4: 
    txt.setText(String.valueOf(operator1/value)); 
    break; 
   case 5: 
    txt.setText(String.valueOf(Math.pow(operator1, value))); 
    break; 
   } 
   break; 
   //x^y 
  case R.id.button19: 
   symbol=5; 
   operator1=value; 
   restart=true; 
   break; 
   // /x 
  case R.id.button20: 
   symbol=6; 
   txt.setText(String.valueOf(Math.sqrt(value))); 
   restart=true; 
   break; 
   // sinx 
  case R.id.button21: 
   symbol=7; 
   txt.setText(String.valueOf(Math.sin(value))); 
   restart=true; 
   break; 
   // cosx 
  case R.id.button22: 
   symbol=8; 
   txt.setText(String.valueOf(Math.cos(value))); 
   restart=true; 
   break; 
    
   default: 
    break; 
  } 
 } 
 
} 

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • ARToolKitunity
    ARToolKit为开源的AR库,相对于高通和easyAr有几点特点:1)开源2)识别项目可以动态添加(详细在后)3)识别文件可以本地生成4)目前只能识别图片(目前为.jpg格式) ... [详细]
  • 利用ipv6技术,废旧笔记本变成server
    如果你家的路由器已经get到了ipv6地址,并且你家的电脑也获取了有效的ipv6地址,在广域网的设备可以访问到。那恭喜你,再配合我这个dd ... [详细]
  • ASP.NET Core WebAPI 开发新建WebAPI项目  转
    转 http:www.cnblogs.comlinezerop5497472.htmlASP.NETCoreWebAPI开发-新建WebAPI项目ASP.NETCoreWebAPI ... [详细]
  • 第38天:Python decimal 模块
    by程序员野客在我们开发工作中浮点类型的使用还是比较普遍的,对于一些涉及资金金额的计算更是不能有丝毫误差,Python的decimal模块为浮点型精确计算提供了支持。1简介deci ... [详细]
  • 摘自:https:www.cnblogs.comnick-huangp4076273.htmlselect*from(select'Nick'asitemfromd ... [详细]
  • CentOS7.2详细安装步骤(二)
    7)语言设置(可以在上一个主界面进行设置,这里不用再次设置)8)SECURITY设置(安全设置)选择default(默认的)策略就可以,通过进行选择,单击完成即可Default#默 ... [详细]
  • 2019 年 Firebase 峰会上发布的新功能
    作者FrancisMa,HeadofProductFirebase的使命是帮助移动开发者和Web开发者迈向成功,但考虑到Firebase每个月有超过200万个活跃的应 ... [详细]
  • 周次学习时间新编写代码行数博客量(篇)学到知识点第一周4h275(行)1(篇)对软件工程这门课程的感性认识软件工程就业分析与思考与及软件工程的定义观看助 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • vector:在vc6中,如果要镶嵌使用vector,如vector,后面的两个应该用,空格隔开,否则被编译器认为是移位符string::npos的值为 ... [详细]
  • Spark 贝叶斯分类算法
    一、贝叶斯定理数学基础我们都知道条件概率的数学公式形式为即B发生的条件下A发生的概率等于A和B同时发生的概率除以B发生的概率。根据此公式变换,得到贝叶斯公式:即贝叶斯定律是关于随机 ... [详细]
  • 安全3AAuthentication:认证Authorzation:授权Accouting|Audition:审计用户管理用户:UID:0,不一定是root,root的uid非0时 ... [详细]
  • 吴恩达“机器学习”——学习笔记二
    定义一些名词欠拟合(underfitting):数据中的某些成分未被捕获到,比如拟合结果是二次函数,结果才只拟合出了一次函数。过拟合(overfitting):使用过量的特征集合, ... [详细]
  • Java工作流引擎关于数据加密流程(MD5数据加密防篡改)
    关键字:驰骋工作流程快速开发平台工作流程管理系统工作流引擎asp.net工作流引擎java工作流引擎.开发者表单拖拽式表单工作流系统流程数据加密md5数据保密流程数据防篡改软加密适 ... [详细]
  • 【实践】基于RTThread的智慧路灯案例实验分享
    之前分享了基于LiteOS的智慧农业案例实验分享基于LiteOS的智慧农业案例实验分享,阅读量挺不错,看样子大家都挺喜欢这种实验。那咱们就再来一个类似的实验:基于RT-Thread ... [详细]
author-avatar
daniel
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有