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

Android入门计算器编写代码

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

这个简易计算器是我按照一本android开发入门书学的,书上的第一个例子就是计算器的编写。计算器的编写主要涉及到按键的布局和按键输入要点。

一个总的Lnearlayout的布局下orientation设置为vertical垂直分布,然后此布局下再设置1给我Edittext的一个文本框4个Lnearlayout子布局(第4个布局里可以嵌套另外3个Lnearlayout的布局来实现按钮排版)这4个子布局在你的界面上肯定是垂直分布的,因为你的总布局设置vertical。第一个子布局放置4个Button,分别是mc、m+、m-和mr这4个功能按钮。

布局代码就不贴了,贴下加减乘除的代码。

package com.example.boss.calculator;

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

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

 Button btn_0, btn_1, btn_2, btn_3, btn_4, btn_5,
   btn_6, btn_7, btn_8, btn_9, btn_equal,
   btn_point, btn_clean, btn_del, btn_plus,
   btn_minus, btn_multiply, btn_divide;
 EditText et_input;
 boolean clear_flag;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  btn_0 = (Button) findViewById(R.id.btn_0);
  btn_1 = (Button) findViewById(R.id.btn_1);
  btn_2 = (Button) findViewById(R.id.btn_2);
  btn_3 = (Button) findViewById(R.id.btn_3);
  btn_4 = (Button) findViewById(R.id.btn_4);
  btn_5 = (Button) findViewById(R.id.btn_5);
  btn_6 = (Button) findViewById(R.id.btn_6);
  btn_7 = (Button) findViewById(R.id.btn_7);
  btn_8 = (Button) findViewById(R.id.btn_8);
  btn_9 = (Button) findViewById(R.id.btn_9);
  btn_clean = (Button) findViewById(R.id.btn_clean);
  btn_equal = (Button) findViewById(R.id.btn_equal);
  btn_minus = (Button) findViewById(R.id.btn_minus);
  btn_multiply = (Button) findViewById(R.id.btn_multiplay);
  btn_plus = (Button) findViewById(R.id.btn_plus);
  btn_point = (Button) findViewById(R.id.btn_point);
  btn_del = (Button) findViewById(R.id.btn_del);
  btn_divide = (Button) findViewById(R.id.btn_divide);
  et_input = (EditText) findViewById(R.id.et_input);
  btn_0.setOnClickListener(this);
  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_equal.setOnClickListener(this);
  btn_minus.setOnClickListener(this);
  btn_multiply.setOnClickListener(this);
  btn_divide.setOnClickListener(this);
  btn_del.setOnClickListener(this);
  btn_point.setOnClickListener(this);
  btn_plus.setOnClickListener(this);
  btn_clean.setOnClickListener(this);
  et_input.setOnClickListener(this);
 }

 @Override
 public void onClick(View v) {
  String str = et_input.getText().toString();
  switch (v.getId()) {
   case R.id.btn_0:
   case R.id.btn_1:
   case R.id.btn_2:
   case R.id.btn_3:
   case R.id.btn_4:
   case R.id.btn_5:
   case R.id.btn_6:
   case R.id.btn_7:
   case R.id.btn_8:
   case R.id.btn_9:
   case R.id.btn_point:
    if (clear_flag) {
     clear_flag = false;
     str = "";
     et_input.setText("");
    }
    et_input.setText(str + ((Button) v).getText());
    break;
   case R.id.btn_plus:
   case R.id.btn_minus:
   case R.id.btn_multiplay:
   case R.id.btn_divide:
    if (clear_flag) {
     clear_flag = false;
     str = "";
     et_input.setText("");
    }
    et_input.setText(str + " " + ((Button) v).getText() + " ");
    break;
   case R.id.btn_clean:
    clear_flag = false;

    et_input.setText("");
    break;
   case R.id.btn_del:
    if (clear_flag) {
     clear_flag = false;
     et_input.setText("");
    } else if (str != null && !str.equals("")) {
     et_input.setText(str.substring(0, str.length() - 1));
    }
   case R.id.btn_equal:
    getResult();
    break;
   default:
    break;
  }
 }

 private void getResult() {
  String exp = et_input.getText().toString();
  if(exp==null||exp.equals("")){
   return;
  }
  if(!exp.contains(" ")){
  return;
  }
  if(clear_flag){
   clear_flag=false;
   return ;
  }
  clear_flag = true;
  double result = 0;
  String s1 = exp.substring(0, exp.indexOf(" "));
  String op = exp.substring(exp.indexOf(" ") + 1, exp.indexOf(" ") + 2);
  String s2 = exp.substring(exp.indexOf(" ") + 3);
  if (!s1.equals("") && !s2.equals("")) {
   double d1 = Double.parseDouble(s1);
   double d2 = Double.parseDouble(s2);

   if (op.equals("+")) {
    result = d1 + d2;
   } else if (op.equals("-")) {
    result = d1 - d2;
   } else if (op.equals("*")) {
    result = d1 * d2;
   } else if (op.equals("/")) {
    if (d2 == 0) {
     result = 0;
    } else {
     result = d1 / d2;
    }
   }
   if (!s1.contains(".") && !s2.contains(".") && !op.equals("/")) {
    int r = (int) result;
    et_input.setText(r + "");
   } else {
    et_input.setText(result + "");
   }
  }

  else if(!s1.equals("")&&s2.equals("")){
    et_input.setText(exp);
  }
  else if(s1.equals("")&&!s2.equals("")){
   double d2=Double.parseDouble(s2);
   if(op.equals("+")){
    result=0+d2;
   }else if(op.equals("-")){
    result=0-d2;
   }else if(op.equals("*")){
    result=0;
   }else if(op.equals("/")){
    result = 0;
   }
   if(!s2.contains(".")){
    int r=(int) result;
    et_input.setText(r+" ");
   } else{
    et_input.setText(result+" ");
   }
  }else{
   et_input.setText("");
  }

 }
}

更多计算器功能实现,请点击专题: 计算器功能汇总 进行学习

关于Android计算器功能的实现,查看专题:Android计算器 进行学习。

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


推荐阅读
  • 2023 ARM嵌入式系统全国技术巡讲旨在分享ARM公司在半导体知识产权(IP)领域的最新进展。作为全球领先的IP提供商,ARM在嵌入式处理器市场占据主导地位,其产品广泛应用于90%以上的嵌入式设备中。此次巡讲将邀请来自ARM、飞思卡尔以及华清远见教育集团的行业专家,共同探讨当前嵌入式系统的前沿技术和应用。 ... [详细]
  • Android 九宫格布局详解及实现:人人网应用示例
    本文深入探讨了人人网Android应用中独特的九宫格布局设计,解析其背后的GridView实现原理,并提供详细的代码示例。这种布局方式不仅美观大方,而且在现代Android应用中较为少见,值得开发者借鉴。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
  • 本文将详细介绍如何使用剪映应用中的镜像功能,帮助用户轻松实现视频的镜像效果。通过简单的步骤,您可以快速掌握这一实用技巧。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • 如何在WPS Office for Mac中调整Word文档的文字排列方向
    本文将详细介绍如何使用最新版WPS Office for Mac调整Word文档中的文字排列方向。通过这些步骤,用户可以轻松更改文本的水平或垂直排列方式,以满足不同的排版需求。 ... [详细]
  • 本文总结了在使用Ionic 5进行Android平台APK打包时遇到的问题,特别是针对QRScanner插件的改造。通过详细分析和提供具体的解决方法,帮助开发者顺利打包并优化应用性能。 ... [详细]
  • 理解存储器的层次结构有助于程序员优化程序性能,通过合理安排数据在不同层级的存储位置,提升CPU的数据访问速度。本文详细探讨了静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)的工作原理及其应用场景,并介绍了存储器模块中的数据存取过程及局部性原理。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
author-avatar
忧愁幻想_824
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有