用Android实现计算器

article/2025/9/19 8:46:51

今天课程:

、点击事件的添加

①首先我们应该用写入EditText可编辑文本框,它有一个属性

android:hint="" 可在文本框里写入字符,当你写入其他的字符时会消失;写一个Button按钮标签,属性
android:onClick="doSubmit"是一个点击事件,如doSubmit在MainActivity.java写入监听方法,事件监听有三种写法:

1.1 标签上直接绑定监听方法
      public void xxx(View view) view代表的是按钮里的text

  1.2 创建监听器对象,组件再绑定监听器对象
    1.2.1 匿名内部类

    1.2.2 使用匿名内部类并定义成全局的属性

②不写onClick事件,可以在MainActivity中继承View.OnClickListene ,再在

 onCreate方法中设值。

在监听事件中可以用switch ...case来循环判断条件。

最后我们写了一个简单实现计算机的方法

这是我用网格布局写的简单计算机实现,但有点问题,在夜神运算时会停止运行,请看到的大神指教

activity.mian.xml

<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"android:rowCount="5"android:columnCount="4"tools:context=".MainActivity"><EditTextandroid:id="@+id/main_et_result"android:layout_width="100dp"android:layout_height="100dp"android:layout_columnSpan="4"android:hint="计算"/><Buttonandroid:id="@+id/main_btn_btn1"android:layout_width="60dp"android:layout_height="60dp"android:text="1"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn2"android:layout_width="60dp"android:layout_height="60dp"android:text="2"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn3"android:layout_width="60dp"android:layout_height="60dp"android:text="3"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_chu"android:layout_width="60dp"android:layout_height="60dp"android:text="/"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn4"android:layout_width="60dp"android:layout_height="60dp"android:text="4"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn5"android:layout_width="60dp"android:layout_height="60dp"android:text="5"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn6"android:layout_width="60dp"android:layout_height="60dp"android:text="6"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_cheng"android:layout_width="60dp"android:layout_height="60dp"android:text="*"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn7"android:layout_width="60dp"android:layout_height="60dp"android:text="7"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn8"android:layout_width="60dp"android:layout_height="60dp"android:text="8"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn9"android:layout_width="60dp"android:layout_height="60dp"android:text="9"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_jian"android:layout_width="60dp"android:layout_height="60dp"android:text="-"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn0"android:layout_width="60dp"android:layout_height="60dp"android:layout_gravity="fill_horizontal"android:layout_columnSpan="2"android:text="0"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_dian"android:layout_width="60dp"android:layout_height="60dp"android:text="."android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_jia"android:layout_width="60dp"android:layout_height="60dp"android:layout_gravity="fill_vertical"android:layout_rowSpan="2"android:text="+"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_ok"android:layout_width="60dp"android:layout_height="60dp"android:layout_gravity="fill_horizontal"android:layout_columnSpan="3"android:text="="android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_clear"android:layout_width="60dp"android:layout_height="60dp"android:layout_columnSpan="1"android:text="c"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_del"android:layout_width="60dp"android:layout_height="60dp"android:layout_columnSpan="1"android:text="del"android:onClick="doSubmit"/><Space /></GridLayout>

 MainActivity.java

public class MainActivity extends AppCompatActivity implements  View.OnClickListener{private EditText main_et_result;boolean clear_flag;//清空@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);main_et_result = findViewById(R.id.main_et_result);}@Overridepublic void doSubmit(View view) {int id = view.getId();String input = main_et_result.getText().toString();switch (id){case R.id.main_btn_btn0:main_et_result.setText(main_et_result.getText().toString()+"0");break;case R.id.main_btn_btn1:main_et_result.setText(main_et_result.getText().toString()+"1");break;case R.id.main_btn_btn2:main_et_result.setText(main_et_result.getText().toString()+"2");break;case R.id.main_btn_btn3:main_et_result.setText(main_et_result.getText().toString()+"3");break;case R.id.main_btn_btn4:main_et_result.setText(main_et_result.getText().toString()+"4");break;case R.id.main_btn_btn5:main_et_result.setText(main_et_result.getText().toString()+"5");break;case R.id.main_btn_btn6:main_et_result.setText(main_et_result.getText().toString()+"6");break;case R.id.main_btn_btn7:main_et_result.setText(main_et_result.getText().toString()+"7");break;case R.id.main_btn_btn8:main_et_result.setText(main_et_result.getText().toString()+"8");break;case R.id.main_btn_btn9:main_et_result.setText(main_et_result.getText().toString()+"9");break;case R.id.main_btn_btn_cheng:main_et_result.setText(main_et_result.getText().toString()+"*");break;case R.id.main_btn_btn_chu:main_et_result.setText(main_et_result.getText().toString()+"/");if(clear_flag){clear_flag = false;input = "";main_et_result.setText("");}main_et_result.setText(input+((Button) view).getText().toString());break;case R.id.main_btn_btn_jia:main_et_result.setText(main_et_result.getText().toString()+"+");break;case R.id.main_btn_btn_jian:main_et_result.setText(main_et_result.getText().toString()+"-");break;case R.id.main_btn_btn_dian:main_et_result.setText(main_et_result.getText().toString()+".");if(clear_flag){clear_flag = false;main_et_result.setText("");}main_et_result.setText(input+((Button) view).getText().toString());break;case R.id.main_btn_btn_ok:main_et_result.setText("=");getResult();break;case R.id.main_btn_btn_del:main_et_result.setText("del");if(clear_flag){clear_flag = false;main_et_result.setText("");}else if(input != null || !input.equals("")){main_et_result.setText(input.substring(0,input.length()-1));}break;case R.id.main_btn_btn_clear:main_et_result.setText("c");clear_flag = false;input = "";main_et_result.setText("");break;}}private void getResult() {String exp = main_et_result.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;main_et_result.setText(r+"");}else{main_et_result.setText(result+"");}}else if(!s1.equals("")&&s2.equals("")){main_et_result.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(!s1.contains(".")&&!s2.contains(".")){int r = (int)result;main_et_result.setText(r+"");}else{main_et_result.setText(result+"");}}else{main_et_result.setText("");}}
}

 

 
 
 
 

二、输入框引入外形资源调节样式

 Android资源
   1.1 什么是资源
       指在res文件夹下的xml文件,每一种类型的xml文件都对应了一种资源。
       例如:外形资源(shape)、尺寸资源(dimension)、颜色资源(color)等
   1.2 尺寸资源和颜色资源放res/values目录下 
   1.3 *.xml(文本框的外形资源)可放到drawable目录下
   1.4 设置渐变色与背景色只能取其一,后面会覆盖前面的

根据获得/失去焦点边框变色编辑框
2. 选择器
  2.1 作用:根据控件状态显示不同样式
  2.2 Item: 指定不同状态下控件显示哪个样式

<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/main_et_shape" android:state_focused="true"></item><item android:drawable="@drawable/main_et_shape2" android:state_focused="false"></item>
</selector>

三、今天的收获

今天其实还听了一个同学的技术分享,感觉太牛了,讲的好详细,我自己也在研究一个技术,但没有什么进展,有点伤心,感觉自己不够用心。。。想到以为教员说的:时间还没到就不能说放弃!!!

现在说放弃太没有出息了,是时候学会成长了。。自己还不太成熟,总爱贪玩。加油!!!希望有大神能指点我!!

 


http://chatgpt.dhexx.cn/article/6GkKcexs.shtml

相关文章

Android studio制作计算器源代码

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。https://mp.csdn.net/postedit/82623704 一、Android studio制作计算器源代码 这是我学Android 以来第一次制作计算器&#xff0c;Android学起来说难也不难&#xff0c;说简单也不简单 制作简易的计…

Android入门之简易计算器(一)

Android Android入门之简易计算器&#xff08;一&#xff09; 文章目录 AndroidAndroid入门之简易计算器&#xff08;一&#xff09;[TOC](文章目录) 前言一、项目结构二、界面显示三、前端界面1.界面分布2.文本定义在了strings.xml里面3、圆形按钮创建 四、前端页面总代码五、…

Android 实战项目:简单计算器

文章目录 实战项目&#xff1a;简易计算器1.需求分析2.界面设计3.关键代码1&#xff0e;输入按键的合法性校验2&#xff0e;执行运算并显示计算结果 简单计算器 - 详细操作步骤总结 实战项目&#xff1a;简易计算器 1.需求分析 虽然只学了一些Android的简单控件&#xff0c;但…

Android Studio制作简单计算器

代码地址 https://github.com/xjhqre/android_calculator 效果演示 1. 连续加法 2. 连续减法 3. 连续乘法 4. 连续除法 5. 优先级运算 6. 退格功能 7. 错误提示 制作步骤 1. 创建按钮图片 1.1. 退格图形 <vector xmlns:android"http://schemas.android.com/apk/…

【Android应用开发之前端——简单计算器效果】

1.完成计算器布局 整个计算器界面主要分为两部分&#xff0c;一部分是上面的文本框&#xff0c;用于显示计算结果&#xff1b;另一部分是下面的几排按钮&#xff0c;用户输入数字与各种运算符。为了减少复杂度&#xff0c;我们可以精简一些功能&#xff0c;只保留数字与加、减…

使用Android 实现计算器功能

使用android实现简易的计算器的功能 1、给计算机布局&#xff1a;activity_main_xml&#xff1a; <?xml version"1.0" encoding"utf-8"?> <GridLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"h…

android studio实现计算器界面

实现计算器界面 新建项目1、打开Android Studio2、创建项目3、设置项目基本信息4、等待项目文件加载 打开界面文件1、设置线性布局2、增加子容器3、添加内容 计算器界面完成效果 新建项目 1、打开Android Studio 2、创建项目 点击右上角【New Project】选择“Empty Activity”…

Android Studio实现计算器功能

实验一&#xff1a;做一个简单的计算器 1.创建布局文件Activity_main.xml 代码如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orient…

Android Studio入门教程(计算器)

一、建立开发环境 1、AS简介 Android Studio 是Google开发的一款面向Android开发者的IDE&#xff0c;支持Windows、Mac、Linux等操作系统&#xff0c;基于流行的开发语言java集成开发环境IntelliJ搭建而成的&#xff0c;类似Eclipse ADT。该IDE在2003年5月的Google I/O开发者…

Android开发——简单计算器实现

计算器项目&#xff0c;要求实现加、减、乘、除、求倒数、求平方根等简单运算。 真机调试结果如下图&#xff1a; 布局文件&#xff1a;main_activity.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://sc…

Android Studio简易计算器

目录 第一步&#xff0c;创建新项目 第二步&#xff0c;设计UI 第三步&#xff0c;实现计算逻辑 第四步&#xff0c;测试应用程序 随着移动互联网的普及&#xff0c;手机应用程序已经成为人们生活中不可或缺的一部分。计算器是一类被广泛使用的应用程序之一&#xff0c;因此…

十五、吉布斯采样的理解

由于本人喜欢在纸上手推原理&#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;除此之外…