Android Studio简易计算器

article/2025/9/19 10:09:00

目录

第一步,创建新项目

第二步,设计UI

第三步,实现计算逻辑

第四步,测试应用程序


随着移动互联网的普及,手机应用程序已经成为人们生活中不可或缺的一部分。计算器是一类被广泛使用的应用程序之一,因此学习如何开发一款简易的计算器应用程序是学习Android Studio开发的一个很好的开始。

Android Studio是一款Google开发的用于创建安卓应用的集成开发环境(IDE), 它可以帮助开发者快速设计、开发和测试应用程序。接下来我将为大家介绍如何使用Android Studio创建一个简易的计算器应用程序。

第一步,创建新项目

打开Android Studio并创建一个新项目。

 选择"Empty Activity"模板,然后为项目命名,选择存储项目的位置。

第二步,设计UI

我们需要设计一个简单的计算器界面。添加两个EditText元素用于显示计算器输入和输出结果。接着,在XML文件中依次添加多个Button元素,这些元素将作为计算器中需要用到的各种计算操作进行排列。这些Button元素使用GridLayout布局将它们排列在一起。

<?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="match_parent"tools:context=".MainActivity"android:orientation="vertical"><GridLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><EditTextandroid:id="@+id/ed_srk"android:layout_width="match_parent"android:layout_height="100dp"android:hint="输入框"/><EditTextandroid:id="@+id/ed_sck"android:layout_width="match_parent"android:layout_height="100dp"android:hint="输出框"/></GridLayout><GridLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="center|top"android:orientation="horizontal"android:rowCount="5"android:columnCount="4"><Buttonandroid:id="@+id/btn_c"android:layout_width="160dp"android:layout_height="60dp"android:layout_columnSpan="2"android:text="c"/><Buttonandroid:id="@+id/btn_del"android:layout_width="80dp"android:layout_height="60dp"android:text="DEL"/><Buttonandroid:id="@+id/btn_chu"android:layout_width="80dp"android:layout_height="60dp"android:text="/"/><Buttonandroid:id="@+id/btn7"android:layout_width="80dp"android:layout_height="60dp"android:text="7"/><Buttonandroid:id="@+id/btn8"android:layout_width="80dp"android:layout_height="60dp"android:text="8"/><Buttonandroid:id="@+id/btn9"android:layout_width="80dp"android:layout_height="60dp"android:text="9"/><Buttonandroid:id="@+id/btn_che"android:layout_width="80dp"android:layout_height="60dp"android:text="*"/><Buttonandroid:id="@+id/btn4"android:layout_width="80dp"android:layout_height="60dp"android:text="4"/><Buttonandroid:id="@+id/btn5"android:layout_width="80dp"android:layout_height="60dp"android:text="5"/><Buttonandroid:id="@+id/btn6"android:layout_width="80dp"android:layout_height="60dp"android:text="6"/><Buttonandroid:id="@+id/btn_jih"android:layout_width="80dp"android:layout_height="60dp"android:text="-"/><Buttonandroid:id="@+id/btn1"android:layout_width="80dp"android:layout_height="60dp"android:text="1"/><Buttonandroid:id="@+id/btn2"android:layout_width="80dp"android:layout_height="60dp"android:text="2"/><Buttonandroid:id="@+id/btn3"android:layout_width="80dp"android:layout_height="60dp"android:text="3"/><Buttonandroid:id="@+id/btn_jah"android:layout_width="80dp"android:layout_height="60dp"android:text="+"/><Buttonandroid:id="@+id/btn_yl"android:layout_width="80dp"android:layout_height="60dp"android:text="预留"/><Buttonandroid:id="@+id/btn0"android:layout_width="80dp"android:layout_height="60dp"android:text="0"/><Buttonandroid:id="@+id/btn_dian"android:layout_width="80dp"android:layout_height="60dp"android:text="."/><Buttonandroid:id="@+id/btn_dy"android:layout_width="80dp"android:layout_height="60dp"android:text="="/></GridLayout>
</GridLayout>

第三步,实现计算逻辑

在Java文件中定义一个类,继承自Activity,并实现OnClickListener接口。这一步的目的是为每个Button元素定义单独的事件处理程序。在这个类中,将实现查找所有Button元素并为它们设置事件处理程序,接收用户的输入,根据不同的计算操作,计算出应该显示的结果并显示在输出区域中。

public class MainActivity extends AppCompatActivity implements View.OnClickListener {//创建对象private Button mBtn1, mBtn2, mBtn3, mBtn4, mBtn5,mBtn6, mBtn7, mBtn8, mBtn9, mBtn0,mBtnc, mBtndel, mBtnchu, mBtnche, mBtnjia,mBtnjian, mBtndian, mBtndy, mBtnyl;private EditText edsrk, edsck;//判断文本框是否清空private boolean deng_flag;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mBtn1 = findViewById(R.id.btn1);mBtn2 = findViewById(R.id.btn2);mBtn3 = findViewById(R.id.btn3);mBtn4 = findViewById(R.id.btn4);mBtn5 = findViewById(R.id.btn5);mBtn6 = findViewById(R.id.btn6);mBtn7 = findViewById(R.id.btn7);mBtn8 = findViewById(R.id.btn8);mBtn9 = findViewById(R.id.btn9);mBtn0 = findViewById(R.id.btn0);mBtnc = findViewById(R.id.btn_c);mBtndel = findViewById(R.id.btn_del);mBtnchu = findViewById(R.id.btn_chu);mBtnjia = findViewById(R.id.btn_jah);mBtnjian = findViewById(R.id.btn_jih);mBtndian = findViewById(R.id.btn_dian);mBtndy = findViewById(R.id.btn_dy);mBtnyl = findViewById(R.id.btn_yl);mBtnche = findViewById(R.id.btn_che);//按钮设置点击事件mBtn1.setOnClickListener(this);mBtn2.setOnClickListener(this);mBtn3.setOnClickListener(this);mBtn4.setOnClickListener(this);mBtn5.setOnClickListener(this);mBtn6.setOnClickListener(this);mBtn7.setOnClickListener(this);mBtn8.setOnClickListener(this);mBtn9.setOnClickListener(this);mBtn0.setOnClickListener(this);mBtnc.setOnClickListener(this);mBtndel.setOnClickListener(this);mBtnchu.setOnClickListener(this);mBtnjia.setOnClickListener(this);mBtnjian.setOnClickListener(this);mBtndian.setOnClickListener(this);mBtndy.setOnClickListener(this);mBtnyl.setOnClickListener(this);mBtnche.setOnClickListener(this);edsrk = findViewById(R.id.ed_srk);edsck = findViewById(R.id.ed_sck);}@Overridepublic void onClick(View view) {String input = edsrk.getText().toString();String output = edsck.getText().toString();switch (view.getId()) {case R.id.btn1:case R.id.btn2:case R.id.btn3:case R.id.btn4:case R.id.btn5:case R.id.btn6:case R.id.btn7:case R.id.btn8:case R.id.btn9:case R.id.btn0:case R.id.btn_dian:if (deng_flag) {deng_flag = false;edsrk.setText(null);edsrk.setText(((Button) view).getText());} else {edsrk.setText(input + ((Button) view).getText());}break;case R.id.btn_che:case R.id.btn_jah:case R.id.btn_jih:case R.id.btn_chu:edsrk.setText(input + " " + ((Button) view).getText() + " ");break;case R.id.btn_dy://调用下方方法计算结果getResult();break;case R.id.btn_yl:case R.id.btn_c:edsrk.setText(null);edsck.setText(null);break;case R.id.btn_del://判断是否为空再进行删除if (deng_flag) {deng_flag = false;edsrk.setText("");} else if (input != null && !input.equals("")) {edsrk.setText(input.substring(0, input.length() - 1));}break;}}private void getResult() {String input = edsrk.getText().toString();deng_flag = true;double dResult = 0;int iResult = 0;//截取运算符前面的字符串String s1 = input.substring(0, input.indexOf(" "));//截取运算符String op = input.substring(input.indexOf(" ") + 1, input.indexOf(" ") + 2);//截取运算符后面的字符串String s2 = input.substring(input.indexOf(" ") + 3);//根据s1,s2转换 字符串转换数值double d1 = Double.parseDouble(s1);double d2 = Double.parseDouble(s2);//根据输入的运算符号获得计算结果,将结果返回到输出框if (op.equals("+")) {dResult = d1 + d2;} else if (op.equals("-")) {dResult = d1 - d2;} else if (op.equals("*")) {dResult = d1 * d2;} else if (op.equals("/")) {if (d1 == 0) {dResult = 0;} else {dResult = d1 / d2;}} else {edsck.setText(dResult + "");}//如果输入框数值中含有点小数点或者运算符为除号则结果返回double值if (s1.contains(".") || s2.contains(".") || op.equals("/")) {edsck.setText(dResult + "");} else {iResult = (int) dResult;edsck.setText(iResult + "");}}
}

第四步,测试应用程序

(实现效果)

以上就是使用Android Studio创建一个简易计算器应用程序的步骤。

本文以简易计算器为例,简要介绍了使用Android Studio进行应用程序开发的基本流程,包括创建新项目、添加用户接口元素、定义事件处理程序、测试应用程序和发布应用程序等步骤。只要遵循这些基本步骤,就可以在短短的时间内构建出一个简单但功能齐全的计算器应用程序。


http://chatgpt.dhexx.cn/article/1DmILTcc.shtml

相关文章

十五、吉布斯采样的理解

由于本人喜欢在纸上手推原理&#xff0c;所以附上照片&#xff0c;欢迎提出建议

MCMC、吉布斯采样

学习视频&#xff1a;B站白板推导 学习和代码教程&#xff1a; Li Hang code 知乎&#xff08;和上面内容一模一样&#xff09; &#xff08;权当参考&#xff09; 关于上面代码中&#xff0c;吉布斯采样二维正态分布的理解&#xff1a; Σ的意思是协方差矩阵&#xff0c;在…

LDA----吉布斯采样

w~Mult(w|p) 这里可以引入一个新的概念:概率图模型,来画出这种模型。如图 3-1所示,图中被涂色的 表示可观测变量,方框表示重复抽取的次数, 表示一篇文档中总共 个单词, 表示M篇文档。也就是说,重复抽取 篇文档,每个文档抽取 个单词,这样的生成模型生成了整个语料(corpus)。 总结…

LDA-模型的实现-----吉布斯采样

https://www.cnblogs.com/nlp-yekai/p/3858705.html?utm_sourcetuicool&utm_mediumreferral 算法 LDA Collapsed Gibbs Sampling 输入&#xff1a;文档集(分词后)&#xff0c;K(主题数)&#xff0c;α&#xff0c;β&#xff0c;iter_number(迭代次数) 输出&#xff1a;…

R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样

创建测试数据 第一步&#xff0c;我们创建一些测试数据&#xff0c;用来拟合我们的模型。我们假设预测变量和因变量之间存在线性关系&#xff0c;所以我们用线性模型并添加一些噪音。 trueA <- 5trueB <- 0trueSd <- 10sampleSize <- 31# 创建独立的x值x <- (…

马尔科夫过程与吉布斯采样

随机模拟(或者统计模拟)方法有一个很酷的别名是蒙特卡罗方法(Monte Carlo Simulation)。这个方法的发展始于20世纪40年代&#xff0c;和原子弹制造的曼哈顿计划密切相关&#xff0c;当时的几个大牛&#xff0c;包括乌拉姆、冯.诺依曼、费米、费曼、Nicholas Metropolis&#xf…

吉布斯采样的简单描述

几个可以学习gibbs sampling的方法1&#xff0c;读Bishop的Pattern Recognition and Machine Learning&#xff0c;讲的很清楚&#xff0c;但是我记得好像没有例子。2&#xff0c;读artificial Intelligence&#xff0c;2、3版&#xff0c;都有。但是我没读过。3&#xff0c;最…

【ML】线性回归的吉布斯采样(Gibbs Sampling)实现(python)

导航 Bayesian Linear RegressionGibbs SamplingDerving a Gibbs samplerUpdate for β 0 \beta_0 β0​Update for β 1 \beta_1 β1​Update for τ \tau τSynthetic dataGibbs sampler code downlaodReferences Bayesian Linear Regression 考虑只有一个自变量(indepen…

【机器学习】主题建模+隐狄利克雷分配模型(LDA)+吉布斯采样

【主题建模】 大数据时代&#xff0c;面对海量的数据&#xff0c;如果能知道它的主题是什么&#xff0c;从数据压缩的角度来看&#xff0c;我们可以通过很少量的主题来管理很大亮的文档数据集合&#xff0c;从而实现一个比较简洁的操作和管理文档集合的目的&#xff1b;除此之外…

【人工智能】对贝叶斯网络进行吉布斯采样

问题 现要求通过吉布斯采样方法&#xff0c;利用该网络进行概率推理&#xff08;计算 P(RT|SF, WT)、P2(CF|WT)的概率值&#xff09;。 原理 吉布斯采样的核心思想为一维一维地进行采样&#xff0c;采某一个维度的时候固定其他的维度&#xff0c;在本次实验中&#xff0c;假…

matlab bnt工具箱吉布斯采样,吉布斯采样——原理及matlab实现

原文来自:https://victorfang.wordpress.com/2014/04/29/mcmc-the-gibbs-sampler-simple-example-w-matlab-code/ 【注】评论区有同学指出译文理论编码有误,请参考更官方的文献,个人当时仅验证过红色字体部分理论与维基百科中二位随机变量吉布斯采样的结果是否对应,其余部分…

【LDA】吉布斯采样

吉布斯采样是用条件概率得到联合概率分布。 其实是得到我们想要东西的近似解 目录 1 蒙特卡罗2 马尔科夫链3.MCMC采样4 MH采样5 吉布斯采样 1 蒙特卡罗 蒙特卡洛方法是为了解决一些不太好求解的求和或者积分问题。 其实就是一个近似方法&#xff0c;通过采样的多个样本代替原…

机器学习笔记之马尔可夫链蒙特卡洛方法(四)吉布斯采样

机器学习笔记之马尔可夫链蒙特卡洛方法——吉布斯采样 引言回顾&#xff1a;MH采样算法基于马尔可夫链的采样方式细致平衡原则与接收率 MH采样算法的弊端吉布斯采样方法吉布斯采样的采样过程吉布斯采样的推导过程吉布斯采样的代码实现 引言 上一节介绍了将马尔可夫链与蒙特卡洛…

三步完成吉布斯采样Gibbs sampling

吉布斯采样的具体执行过程只需要三个步骤&#xff0c;非常非常简单好理解&#xff0c;其它相关的背景知识能帮助加深理解。 一、Preliminaries Monte Carlo methods 它是很宽泛的一类计算方法&#xff0c;依赖重复的随机采样去获得数值结果。a broad class of computational a…

MCMC笔记:吉布斯采样(Gibbs)

1 介绍 吉布斯采样是一种特殊的MH采样 MCMC笔记Metropilis-Hastings算法&#xff08;MH算法&#xff09;_UQI-LIUWJ的博客-CSDN博客 此时我们要采样的分布是一个高维的情况 吉布斯采样的思想就是一维一维地进行采样&#xff0c;采某一个维度的时候固定其他的维度 吉布斯采…

吉布斯采样

回顾一下MC 采样&#xff1a; f(x)是已知 的概率分布函数&#xff0c;现在 找到一系列的x服从这个概率分布。也就是在f(x&#xff09;当中抽取一些样本x。后来就提出了&#xff1a; F(x)是f(x)的累积概率分布&#xff0c;只需 在0到1上均匀采样得到i&#xff0c;然后将这个样本…

随机采样和随机模拟:吉布斯采样Gibbs Sampling

http://blog.csdn.net/pipisorry/article/details/51373090 吉布斯采样算法详解 为什么要用吉布斯采样 通俗解释一下什么是sampling。 sampling就是以一定的概率分布&#xff0c;看发生什么事件。举一个例子。甲只能E&#xff1a;吃饭、学习、打球&#xff0c;时间T&#xff1a…

吉布斯抽样

吉布斯采样是生成马尔科夫链的一种方法&#xff0c;生成的马尔科夫链可以用来做蒙特卡洛仿真&#xff0c;从而求得一个较复杂的多元分布。 吉布斯采样的具体做法&#xff1a;假设有一个k维的随机向量&#xff0c;现想要构造一条有n个样本的k维向量&#xff08;n样本马尔科夫序列…

从马尔科夫过程到吉布斯采样(附程序示例)

目标&#xff1a;如何采取满足某个概率分布的一组数据&#xff0c;比如如何给出满足标准正太分布的1000个点&#xff0c;当然该分布比较简单&#xff0c;生成满足此分布的1000个点并不难&#xff0c;对matlab&#xff0c;python 等都是一行语句的事&#xff0c;但是如果是一个不…

sqlloader导出数据指定分隔符_来一份数据库全家桶~

♫. ♪ ~ ♬..♩~ ♫. ♪..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩♫. ♪ ~ ♬..♩~ ♫. ♪..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩ 点击蓝字关注我们♫. ♪ ~ ♬..♩~ ♫. ♪..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩..…