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

Android实现简易的计算器

这篇文章主要为大家详细介绍了Android实现简易的计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android实现简易的计算器的具体代码,供大家参考,具体内容如下

布局(activity_main.xml)



 



 

响应及计算(MainActivity)

package com.mylayout;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

 private EditText editText;

 //数字0-9
 private Button b1;
 private Button b2;
 private Button b3;
 private Button b4;
 private Button b5;
 private Button b6;
 private Button b7;
 private Button b8;
 private Button b9;
 private Button b0;
 private Button b00;

 //运算符
 private Button per;
 private Button add;// +
 private Button sub; // -
 private Button mul; // *
 private Button div; // /
 private Button dot; //小数点
 private Button equ; // =
 
 private boolean back; //退格

 private boolean clear_bool= true;//清空
 private boolean dot_flag1 = true;
 private boolean dot_flag2 = true;

 @Override
 public void onClick(View view) {

  String input = editText.getText().toString();
  switch (view.getId()){

   case R.id.b0:
   case R.id.b1:
   case R.id.b2:
   case R.id.b3:
   case R.id.b4:
   case R.id.b5:
   case R.id.b6:
   case R.id.b7:
   case R.id.b8:
   case R.id.b9:
   case R.id.b00:
     if(dot_flag1)dot_flag2 = true;
     if(clear_bool)
     {
      clear_bool = false;
      editText.setText(""+((Button)view).getText());
     }
     else
     {
      editText.setText(input + ((Button)view).getText());//结果集就为本身
     }
    break;
   case R.id.dot:
     if(dot_flag1&&dot_flag2)
     {
      dot_flag1 = false;
      dot_flag2 = false;
      editText.setText(input + ((Button)view).getText());
     }
     break;
   case R.id.per:
   case R.id.plus:
   case R.id.sub:
   case R.id.mul:
   case R.id.div:
    dot_flag1 = true;
    if(clear_bool)
    {
     clear_bool = false;
     input = "";
     editText.setText("");
    }
    editText.setText(input + ((Button)view).getText()+" ");
    break;
   case R.id.back: //退格
    if(input != null || !input.equals("")) {
     if(input.length()>1) {
      editText.setText(input.substring(0, input.length() - 1));//
     }
     else{
      clear_bool =true;
      editText.setText("0");
     }


    }
    break;
   case R.id.clear: //清空
    editText.setText("0");
    clear_bool = true;
    break;
   case R.id.equ:
    calculation();
    break;
  }


 }

 //计算结果
 private void calculation() {
  String s1 = editText.getText().toString();   //获取字符串
  if (s1 == null){
   return;
  }
  boolean flag = false;
  if(s1.charAt(0)=='-')
  {
   s1 = s1.substring(1);
   flag = true;
  }
  String []num = s1.split("[-÷×+]");  //分割字符串获得各个数字
  double []n = new double[num.length];
  for(int i=0;i1)
  {
   for (int j = 0; j 

测试

关于计算器的精彩文章请查看《计算器专题》 ,更多精彩等你来发现!

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


推荐阅读
  • 本文详细介绍了如何在 Android 应用中获取系统的版本号,包括具体的应用场景和实现步骤。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 在探讨如何在Android的TextView中实现多彩文字与多样化字体效果时,本文提供了一种不依赖HTML技术的解决方案。通过使用SpannableString和相关的Span类,开发者可以轻松地为文本添加丰富的样式和颜色,从而提升用户体验。文章详细介绍了实现过程中的关键步骤和技术细节,帮助开发者快速掌握这一技巧。 ... [详细]
  • 在 Android 开发中,`android:exported` 属性用于控制组件(如 Activity、Service、BroadcastReceiver 和 ContentProvider)是否可以被其他应用组件访问或与其交互。若将此属性设为 `true`,则允许外部应用调用或与之交互;反之,若设为 `false`,则仅限于同一应用内的组件进行访问。这一属性对于确保应用的安全性和隐私保护至关重要。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 深入解析 SAP UI5 Page 控件的构造函数参数及其应用
    深入解析 SAP UI5 Page 控件的构造函数参数及其应用 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • Parallels Desktop 10 是一款功能强大的虚拟化软件,专为 Mac 用户设计,使其能够无缝运行 Windows 应用程序。该软件不仅显著提升了图形应用的性能,还优化了演示效果。对于需要在 Mac 上高效运行 Windows 程序的用户来说,Parallels Desktop 10 是一个理想的选择。本文将介绍如何获取其激活码及免费下载渠道,帮助用户轻松激活并使用这一强大工具。 ... [详细]
  • 本文详细探讨了几种常用的Java后端开发框架组合及其具体应用场景。通过对比分析Spring Boot、MyBatis、Hibernate等框架的特点和优势,结合实际项目需求,为开发者提供了选择合适框架组合的参考依据。同时,文章还介绍了这些框架在微服务架构中的应用,帮助读者更好地理解和运用这些技术。 ... [详细]
  • 本文深入解析了通过JDBC实现ActiveMQ消息持久化的机制。JDBC能够将消息可靠地存储在多种关系型数据库中,如MySQL、SQL Server、Oracle和DB2等。采用JDBC持久化方式时,数据库会自动生成三个关键表:`activemq_msgs`、`activemq_lock`和`activemq_ACKS`,分别用于存储消息数据、锁定信息和确认状态。这种机制不仅提高了消息的可靠性,还增强了系统的可扩展性和容错能力。 ... [详细]
  • 本文深入探讨了Hibernate框架中乐观锁和悲观锁的机制及其多态特性。乐观锁假设数据在大多数情况下不会发生冲突,因此在读取数据时不加锁,而是在更新时检查版本号以确保数据未被修改。相比之下,悲观锁则认为数据在并发环境下容易产生冲突,因此在读取数据时立即加锁,以防止其他事务访问同一数据,从而避免潜在的数据不一致问题。文章还详细分析了这两种锁机制在实际应用中的优缺点,并介绍了Hibernate中的多态特性如何与锁机制结合,以实现更高效的数据管理和并发控制。 ... [详细]
author-avatar
手机用户2502903535
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有