广告
返回顶部
首页 > 资讯 > 移动开发 >Android studio实现简单计算器
  • 338
分享到

Android studio实现简单计算器

AndroidStudiostudioAndroid 2022-06-06 21:06:06 338人浏览 安东尼
摘要

本文实例为大家分享了Android studio实现简单计算器的具体代码,供大家参考,具体内容如下 需求分析 在Android studio中设计并实现一个简单的计算器,实现连

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

需求分析

在Android studio中设计并实现一个简单的计算器,实现连续的加减乘除运算。

界面设计

采用网格GridLayout布局,设计了一个6行4列的网格,最上边是一个EditText用来显示用户输入的运算数字和运算符,以及相关的运算结果,其占4列,文本框大小为50dip;依次往下的界面分别设置了数字和运算符以及操作的按钮,各行各列的每个按钮的大小均设为26sp。

编程分析

设计了两个文件:1、控制文件MainActivity.java,完成按钮的处理事件以及实现加减乘除及其结果输出的功能,主要包括:显示activity_main.xml定义的用户界面;与用户界面程序中的组件建立关联,并分别为每个组件注册并实现监听接口;根据具体输入和条件进行运算并显示结果等。2、布局文件activity_main.xml,完成计算器界面的网格布局设计,包括了一个文本编辑框和18个按钮。

具体进度

第1天:对简单计算器进行系统的功能和界面分析,形成自己大致的设计想法,然后根据老师建议的书本程序以及自己上网搜索的安卓项目编程,系统地总结出自己编程的过程以及开始理解各类代码。由于对移动编程这门课还不是很熟悉,所以对其中编程部分的理解为自己往后调试程序有很大的帮助。

第2天:开始敲代码。由于第一次在Android studio上面编程,对这个软件的各项操作都不熟悉,所以刚开始就在软件摸索上面花费了较多的时间。由于此次设计的界面老师给了我们书本的模板,所以我选择从简单的布局文件的设计开始编程,一方面也方便自己熟悉Android studio。

第3天:开始根据自己的理解和想法开始设计并调试控制文件的程序。由于这部分设计到多种函数以及接口的设计以及实现,运用的是java,由于对过去学的java语言有些遗忘了,而且现在还要涉及关于新知识.xml的结合,所以在这部分花的时间比较长。期间出现了较多的bug,虽然调试起来很吃力,但最终一点点把程序调试成功还是挺开心的。

第4天:原本以为程序调试成功就好了,但是没想到最后在AVD的各种选择和配置、调用问题上花了更多的时间和精力。由于第一次接触Android studio,所以对其中很多配置都不了解,也是第一次听说AVD,在最终运行这个计算器APP的时候在AVD的选择和配置失败上卡了较长时间,通过百度以及请教同学,一步步地终于把最后这一步做好了。至此便完成了自己第一个简单APP的开发

心得体会

这是我的第一个安卓项目开发,这个计算器代码的逻辑都比较简单,然后其功能也很不完善,是一个比较粗糙的设计。即便如此,由于自己对Android studio应用程序设计的知识掌握得也不是很好,编程能力也比较弱,所以还是花了比较多的时间去研究和体会。但是,也正因为期间遇到的很多困难和bug,在自己一点点去设法解决的过程中也对这门课程的理论知识以及相关操作都有了更清晰的了解,现在明白了其中和大致框架和原理,为往后深入的学习和编程做好多一点基础巩固。

控制文件MainActivity.java


package com.example.df.firstapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button; //引用按钮组件
import android.widget.EditText; //引用文本编辑框组件
import android.text.TextUtils; //TextUtils类用于处理字符串
//定义实现监听接口的类MainActivity
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  //声明17个按钮和一个文本编辑框
  Button bt_num0,bt_num1,bt_num2,bt_num3,bt_num4,bt_num5,bt_num6,bt_num7,
bt_num8,bt_num9,bt_delete,bt_div,bt_mult,bt_minus,bt_plus,bt_equal,bt_dot,bt_clear;
 private EditText et_calc;
 @Override
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main); //显示activity_main.xml定义的用户界面
  initViewAndListener(); //调用函数initViewAndListener()
 }
 //定义函数initViewAndListener(),用于与用户界面程序中的组件建立关联,并分别注册监听接口
 private void initViewAndListener() { 
  bt_num0 = (Button)findViewById(R.id.bt_num0);
  bt_num0.setOnClickListener(this);
  bt_num1 = (Button)findViewById(R.id.bt_num1);
  bt_num1.setOnClickListener(this);
  bt_num2 =(Button) findViewById(R.id.bt_num2);
  bt_num2.setOnClickListener(this);
  bt_num3 = (Button)findViewById(R.id.bt_num3);
  bt_num3.setOnClickListener(this);
  bt_num4 = (Button)findViewById(R.id.bt_num4);
  bt_num4.setOnClickListener(this);
  bt_num5 = (Button)findViewById(R.id.bt_num5);
  bt_num5.setOnClickListener(this);
  bt_num6 = (Button)findViewById(R.id.bt_num6);
  bt_num6.setOnClickListener(this);
  bt_num7 = (Button)findViewById(R.id.bt_num7);
  bt_num7.setOnClickListener(this);
  bt_num8 = (Button)findViewById(R.id.bt_num8);
  bt_num8.setOnClickListener(this);
  bt_num9 = (Button)findViewById(R.id.bt_num9);
  bt_num9.setOnClickListener(this);
  bt_delete = (Button)findViewById(R.id.bt_delete);
  bt_delete.setOnClickListener(this);
  bt_div = (Button)findViewById(R.id.bt_div);
  bt_div.setOnClickListener(this);
  bt_mult = (Button)findViewById(R.id.bt_mult);
  bt_mult.setOnClickListener(this);
  bt_minus = (Button)findViewById(R.id.bt_minus);
  bt_minus.setOnClickListener(this);
  bt_plus = (Button)findViewById(R.id.bt_plus);
  bt_plus.setOnClickListener(this);
  bt_equal = (Button)findViewById(R.id.bt_equal);
  bt_equal.setOnClickListener(this);
  et_calc = (EditText)findViewById(R.id.et_calc);
  bt_dot = (Button)findViewById(R.id.bt_dot);
  bt_dot.setOnClickListener(this);
  bt_clear = (Button)findViewById(R.id.bt_clear);
  bt_clear.setOnClickListener(this);
 }
 private boolean lastIsOperator; //记录当前是否进行计算操作
 private String lastOperators = ""; //记录上一次进行计算操作的结果
 private double firstNumber = 0D; //定义并初始化第一次的取值
 private double sencondNumber = 0D; //定义并初始化第二次的取值
 //onClick()方法,触发OnClickListener接口
 public void onClick(View v) {
  String currentText = et_calc.getText().toString(); //获取当前文本编辑框的内容
  String operatorNumber = ""; //定义并初始化操作数为””
  if (currentText.equals("0")) { //若当前输入数为0则设置文本编辑框为””
   et_calc.setText("");
  }
  operatorNumber = et_calc.getText().toString(); //根据编辑框的内容更改操作数值
  if(!lastOperators.equals("")) //判断上一次操作的数是否为空,非空则建立索引,随之修改当前操作数
  {
   int index = operatorNumber.lastIndexOf(lastOperators);
   operatorNumber = operatorNumber.substring(index+1);
  }
  //分别获取按钮的内容至文本编辑框
  switch (v.getId()) {
   case R.id.bt_num0:
    et_calc.setText(et_calc.getText() + "0");
    lastIsOperator = false;
    break;
   case R.id.bt_num1:
    et_calc.setText(et_calc.getText() + "1");
    lastIsOperator = false;
    break;
   case R.id.bt_num2:
    et_calc.setText(et_calc.getText() + "2");
    lastIsOperator = false;
    break;
   case R.id.bt_num3:
    et_calc.setText(et_calc.getText() + "3");
    lastIsOperator = false;
    break;
   case R.id.bt_num4:
    et_calc.setText(et_calc.getText() + "4");
    lastIsOperator = false;
    break;
   case R.id.bt_num5:
    et_calc.setText(et_calc.getText() + "5");
    lastIsOperator = false;
    break;
   case R.id.bt_num6:
    et_calc.setText(et_calc.getText() + "6");
    lastIsOperator = false;
    break;
   case R.id.bt_num7:
    et_calc.setText(et_calc.getText() + "7");
    lastIsOperator = false;
    break;
   case R.id.bt_num8:
    et_calc.setText(et_calc.getText() + "8");
    lastIsOperator = false;
    break;
   case R.id.bt_num9:
    et_calc.setText(et_calc.getText() + "9");
    lastIsOperator = false;
    break;
   case R.id.bt_dot:
    et_calc.setText(et_calc.getText() + ".");
    lastIsOperator = false;
    break;
   //归零按钮,将当前操作数直接清零
   case R.id.bt_clear:
    et_calc.setText("");
    lastIsOperator = false;
    firstNumber=0D;
    sencondNumber=0D;
    lastOperators="=";
    break;
   //清除按钮,若当前文本编辑框内容为空,点击一次则删除一个字符串
   case R.id.bt_delete: 
    if (TextUtils.isEmpty(et_calc.getText())) {
     return;
    }
    lastIsOperator = false;
    et_calc.setText(currentText.substring(0, currentText.length() - 1).length() > 0 ? currentText.substring(0, currentText.length() - 1) : "0");
    break;
   //计算按钮,若当前内容非空、或者以及上一次有操作记录且记录不是”=”的情况下,将当前的操作记录设置为+、-、*、/、=
   case R.id.bt_div:
    if ((TextUtils.isEmpty(et_calc.getText())
      || lastIsOperator) && !lastOperators.equals("=")) {
     return;
    }
    opratorCalc(operatorNumber,"÷");
    lastIsOperator = true;
    et_calc.setText(et_calc.getText() + "÷");
    lastOperators = "÷";
    break;
   case R.id.bt_mult:
    if ((TextUtils.isEmpty(et_calc.getText())
      || lastIsOperator) && !lastOperators.equals("=")) {
     return;
    }
    opratorCalc(operatorNumber,"*");
    lastIsOperator = true;
    et_calc.setText(et_calc.getText() + "*");
    lastOperators = "*";
    break;
   case R.id.bt_minus:
    if ((TextUtils.isEmpty(et_calc.getText())
      || lastIsOperator) && !lastOperators.equals("=")) {
     return;
    }
    opratorCalc(operatorNumber,"-");
    lastIsOperator = true;
    et_calc.setText(et_calc.getText() + "-");
    lastOperators = "-";
    break;
   case R.id.bt_plus:
    if ((TextUtils.isEmpty(et_calc.getText())
      || lastIsOperator) && !lastOperators.equals("=")) {
     return;
    }
    opratorCalc(operatorNumber,"+");
    lastIsOperator = true;
    et_calc.setText(et_calc.getText() + "+");
    lastOperators = "+";
    break;
   case R.id.bt_equal:
    double result = 0D;
    if(TextUtils.isEmpty(lastOperators))
    {
     return;
    }
    opratorResult(operatorNumber);
    sencondNumber = 0D;
    lastOperators ="=";
    lastIsOperator = true;
    et_calc.setText(et_calc.getText() + "\n=" + String.valueOf(firstNumber));
    break;
  }
 }
 //运算函数,按具体操作进行+、-、*、/的运算
 private void operate(String operatorNumber)
 {
  if(sencondNumber != 0D) //计算情况一:第二次输入的数不为0
  {
   if(lastOperators.equals("÷"))
   {
    sencondNumber = sencondNumber / Double.parseDouble(operatorNumber);
    firstNumber = firstNumber / sencondNumber;
   }
   else if(lastOperators.equals("*"))
   {
    sencondNumber = sencondNumber * Double.parseDouble(operatorNumber);
    firstNumber = firstNumber * sencondNumber;
   }
   else if(lastOperators.equals("+"))
   {
    sencondNumber = Double.parseDouble(operatorNumber);
    firstNumber = firstNumber + sencondNumber;
   }
   else if(lastOperators.equals("-"))
   {
    sencondNumber = Double.parseDouble(operatorNumber);
    firstNumber = firstNumber - sencondNumber;
   }
  }
  Else //计算情况二:第二次输入的数为0
  {
   if(lastOperators.equals("÷"))
   {
    firstNumber = firstNumber / Double.parseDouble(operatorNumber);
   }
   else if(lastOperators.equals("*"))
   {
    firstNumber = firstNumber * Double.parseDouble(operatorNumber);
   }
   else if(lastOperators.equals("+"))
   {
    firstNumber = firstNumber + Double.parseDouble(operatorNumber);
   }
   else if(lastOperators.equals("-"))
   {
    firstNumber= firstNumber - Double.parseDouble(operatorNumber);
   }
  }
 }
 //分别返回计算结果
public void opratorResult(String operatorNumber)
 {
  operate(operatorNumber);
}
//按当前计算结果进行下一次的数据输入及计算
 public void opratorCalc(String operatorNumber,String currentOprator)
 {
  if(TextUtils.isEmpty(lastOperators))
  {
   firstNumber = Double.parseDouble(operatorNumber);
   return;
  }
  if(lastOperators.equals(currentOprator))
  {
   if(lastOperators.equals("÷"))
   {
    firstNumber = firstNumber / Double.parseDouble(operatorNumber);
   }
   else if(lastOperators.equals("*"))
   {
    firstNumber = firstNumber * Double.parseDouble(operatorNumber);
   }
   else if(lastOperators.equals("+"))
   {
    firstNumber = firstNumber + Double.parseDouble(operatorNumber);
   }
   else if(lastOperators.equals("-"))
   {
    firstNumber = firstNumber - Double.parseDouble(operatorNumber);
   }
   return;
  }
  operate(operatorNumber);
 }
} 

布局文件activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="Http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:columnCount="4" //设置了一个4列6行的网格
 android:rowCount="6"
 tools:context=".MainActivity"> 
 <EditText
  android:id="@+id/et_calc"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_columnSpan="4" //该组件占据4列的位置
  android:layout_marginLeft="4px"
  android:gravity="left"
android:layout_row="0"
  android:background="#eee"
  android:textSize="50dip"/>
 <Button
  android:id="@+id/bt_delete"
  android:layout_column="3"
  android:layout_row="1"
  android:text="清除"
  android:textSize="26sp"/>
<Button
  android:id="@+id/bt_clear"
  android:layout_column="0"
  android:layout_row="1"
  android:text="归零"
  android:textSize="26sp"/>
 <Button
  android:id="@+id/bt_num1"
  android:layout_column="0"
  android:layout_row="2"
  android:text="1" 
android:textSize="26sp"/>
 <Button
  android:id="@+id/bt_num2"
  android:layout_column="1"
  android:layout_row="2"
  android:text="2" 
android:textSize="26sp"/>
 <Button
  android:id="@+id/bt_num3"
  android:layout_column="2"
  android:layout_row="2"
  android:text="3" 
android:textSize="26sp"/>
 <Button
  android:id="@+id/bt_plus"
  android:layout_column="3"
  android:layout_row="2"
  android:text="+" 
android:textSize="26sp"/>
 <Button
  android:id="@+id/bt_num4"
  android:layout_column="0"
  android:layout_row="3"
  android:text="4"
android:textSize="26sp" />
 <Button
  android:id="@+id/bt_num5"
  android:layout_column="1"
  android:layout_row="3"
  android:text="5" 
android:textSize="26sp"/>
 <Button
  android:id="@+id/bt_num6"
  android:layout_column="2"
  android:layout_row="3"
  android:text="6" 
android:textSize="26sp"/>
 <Button
  android:id="@+id/bt_minus"
  android:layout_column="3"
  android:layout_row="3"
  android:text="-"
android:textSize="26sp" />
 <Button
  android:id="@+id/bt_num7"
  android:layout_column="0"
  android:layout_row="4"
  android:text="7" 
android:textSize="26sp"/>
 <Button
  android:id="@+id/bt_num8"
  android:layout_column="1"
  android:layout_row="4"
  android:text="8" 
android:textSize="26sp"/>
 <Button
  android:id="@+id/bt_num9"
  android:layout_column="2"
  android:layout_row="4"
  android:text="9"
android:textSize="26sp" />
 <Button
  android:id="@+id/bt_mult"
  android:layout_column="3"
  android:layout_row="4"
  android:text="*" 
android:textSize="26sp" />
 <Button
  android:id="@+id/bt_dot"
  android:layout_column="0"
  android:layout_row="5"
  android:text="."
android:textSize="26sp" />
 <Button
  android:id="@+id/bt_num0"
  android:layout_column="1"
  android:layout_row="5"
  android:text="0"
android:textSize="26sp" />
 <Button
  android:id="@+id/bt_equal"
  android:layout_column="2"
  android:layout_row="5"
  android:text="="
android:textSize="26sp" />
 <Button
  android:id="@+id/bt_div"
  android:layout_column="3"
  android:layout_row="5"
  android:text="/"
android:textSize="26sp" />
</GridLayout>

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

您可能感兴趣的文章:Android Studio实现简单计算器功能Android Studio实现简易计算器(表格布局TableLayout)Android Studio实现简单计算器APPAndroid studio设计简易计算器android studio实现计算器Android Studio实现简易计算器从零开始学android实现计算器功能示例分享(计算器源码)Android开发实现的简单计算器功能【附完整demo源码下载】android计算器简单实现代码Android studio实现简单的计算器


--结束END--

本文标题: Android studio实现简单计算器

本文链接: https://www.lsjlt.com/news/29942.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android studio实现简单计算器
    本文实例为大家分享了Android studio实现简单计算器的具体代码,供大家参考,具体内容如下 需求分析 在Android studio中设计并实现一个简单的计算器,实现连...
    99+
    2022-06-06
    Android Studio studio Android
  • Android Studio实现简单计算器APP
    一、简介:用Android Studio 实现一个简单的计算器APP,并在蓝叠模拟器中运行。 该计算器只能实现两位数字的四则运算。 二、代码 activity_mai...
    99+
    2022-06-06
    Android Studio studio app Android
  • Android Studio实现简单计算器功能
    本文实例为大家分享了Android Studio实现简单计算器功能的具体代码,供大家参考,具体内容如下 程序步骤: (1)在布局文件定义一些计算器界面的文本框,按钮等组件。 (...
    99+
    2022-06-06
    Android Studio studio Android
  • Android Studio实现简单计算器开发
    本文实例为大家分享了Android Studio实现简单计算器开的具体代码,供大家参考,具体内容如下 效果展示: 路径和文件: AndroidManifest.xml <...
    99+
    2022-11-13
  • Android studio实现简单计算器的编写
    本文实例为大家分享了Android studio实现简单计算器的具体代码,供大家参考,具体内容如下 话不多说,首先附上代码: MainActivity.java package co...
    99+
    2022-11-13
  • Android Studio开发实现简单计算器功能
    本文实例为大家分享了Android Studio开发实现简单计算器的具体代码,供大家参考,具体内容如下 代码: activity_3.xml <xml version="1.0...
    99+
    2022-11-13
  • android studio实现简单的计算器小功能
    本文实例为大家分享了android studio实现简单计算器的具体代码,供大家参考,具体内容如下 布局: <xml version="1.0" encoding="utf-8...
    99+
    2022-11-13
  • Android Studio实现简易计算器设计
    本文实例为大家分享了Android Studio实现简易计算器的具体代码,供大家参考,具体内容如下 一、题目 1、如图所示(实际设计,类似此界面样式即可,全屏时,按钮将会纵向拉伸),...
    99+
    2022-11-13
  • android studio实现简易的计算器
    本文实例为大家分享了android studio实现简易计算器的具体代码,供大家参考,具体内容如下 先看效果图 基本功能:加,减,乘,除 核心代码实现 public class M...
    99+
    2022-11-13
  • android studio怎么实现简单的计算器小功能
    这篇文章主要介绍了android studio怎么实现简单的计算器小功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇android studio怎么实现简单的计算器小功能文章都会有所收获,...
    99+
    2023-06-30
  • Android实现简单计算器
    本文实例为大家分享了Android实现简单计算器的具体代码,供大家参考,具体内容如下 功能 1、加减乘除四则运算 2、归0 3、回退 4、即时运算 配置 在build.gradle...
    99+
    2022-11-12
  • android studio 项目 :UI设计高精度实现简单计算器
    UI设计: 实验目的: 自主完成一个简单APP的设计工作,综合应用已经学到的Android UI设计技巧,重点注意合理使用布局。实验要求: 1.完成一个计算器的设计,可以以手机自带的...
    99+
    2022-11-12
  • Android Studio实现简易计算器源码
    本文实例为大家分享了Android Studio实现简易计算器的具体代码,供大家参考,具体内容如下 效果图: 源码: 布局样式: <xml version="1.0" en...
    99+
    2022-11-13
  • Android Studio简易计算器
    目录 第一步,创建新项目 第二步,设计UI 第三步,实现计算逻辑 第四步,测试应用程序 随着移动互联网的普及,手机应用程序已经成为人们生活中不可或缺的一部分。计算器是一类被广泛使用的应用程序之一,因此学习如何开发一款简易的计算器应用程序是...
    99+
    2023-09-17
    android studio android
  • 【Android Studio】简易计算器
    简易计算器要求: 1,操作简单,易于掌握,界面简单。 2.方便进行加,减,乘,除等操作。数字保留小数点后两位。 3.包含小数点运算和输入回退功能。 4.能够进行多次叠加运算。 5.系统能够进行多次叠加...
    99+
    2023-09-21
    android studio python android
  • Android Studio怎么实现简易计算器设计
    今天小编给大家分享一下Android Studio怎么实现简易计算器设计的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2023-06-30
  • 用Android studio实现简易计算器功能
    用Android studio做一个简易计算器,供大家参考,具体内容如下 长话短说,先建立一个Android项目; 创建完成后打开activity_main.xml,构建我们的应...
    99+
    2022-11-13
  • android studio如何实现简易的计算器
    本篇内容主要讲解“android studio如何实现简易的计算器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“android studio如何实现简易的计算器”吧!先看效果...
    99+
    2023-06-30
  • Android Studio怎么实现简易计算器App
    本篇内容主要讲解“Android Studio怎么实现简易计算器App”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android Studio怎么实现简易计算器App”吧!...
    99+
    2023-06-30
  • Android Studio制作一个简单的计算器APP
    虽然现在我们日常生活中很少用到计算器,但是第一次尝试在Android Studio上做一个计算器 程序设计步骤: (1)在布局文件中声明编辑文件框EditText,按钮Button等组件。 (2)在MainActivity中获取组件实例。 ...
    99+
    2023-10-03
    android android studio
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作