Android——在线计算器完整代码

 实现效果

 

一、xml布局文件

这里采用线性布局,关于计算器的布局,可以查看之前的文章。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textResult"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="30sp"android:gravity="right"android:text="" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/btnCLs"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="2"android:text="C"/><Buttonandroid:id="@+id/btnDel"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="2"android:text="Del"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/btnOne"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="1"/><Buttonandroid:id="@+id/btnTwo"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="2"/><Buttonandroid:id="@+id/btnThree"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="3"/><Buttonandroid:id="@+id/btnAdd"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="+"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/btnFour"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="4"/><Buttonandroid:id="@+id/btnFive"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="5"/><Buttonandroid:id="@+id/btnSix"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="6"/><Buttonandroid:id="@+id/btnReduce"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="-"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/btnSeven"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="7"/><Buttonandroid:id="@+id/btnEight"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="8"/><Buttonandroid:id="@+id/btnNine"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="9"/><Buttonandroid:id="@+id/btnMul"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="*"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/btnZero"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="0"/><Buttonandroid:id="@+id/btnPoint"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="."/><Buttonandroid:id="@+id/btnEquals"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="="/><Buttonandroid:id="@+id/btnChu"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="÷"/></LinearLayout>
</LinearLayout>

二、MainActivity.java文件 

1.创建每个按钮的对象

2.实例化每个按钮 通过每个按钮的id进行实例化创建

3.设置每个按钮的点击事件即监听按钮
switch通过id判断被点击的按钮属于哪个控件。如果是数字或小数点,setText(str + ((Button) view).getText())。
如果是加减乘除,setText(str + " " + ((Button) view).getText() + " ")。这里的空格是很巧妙的,对下面运算结果中提取两个数字大有帮助。
如果是清空按钮,setText("")。
如果是删了后面一位数字,setText(str.substring(0,str.length()-1))。调用substring(beginIndex,endIndex)函数。substring函数是用来截取一个字段的一部分。
如果是等于按钮,调用getresult()方法。

4.创建运算结果的方法getresult()。
首先将其中的两个数字和运算符分割出来,调用substring(0,exp.indexOf(" "))函数。indexOf函数用于返回[目标字符串]在[源字符串]中的位置。
接着判断两个数都有,还是第一个数/第二个数为空,分情况写代码。

5.MainActivity.java代码如下:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;public class MainActivity extends AppCompatActivity implements View.OnClickListener{//实现鼠标点击的事件的监听接口//创建每个按钮的对象//数字按钮Button btnOne,btnTwo,btnThree,btnFour,btnFive,btnSix,btnSeven,btnEight,btnNine,btnZero;//加减乘除Button btnChu,btnAdd,btnReduce,btnMul;//其他按钮Button btnCLs,btnDel,btnEquals,btnPoint;//文本框TextView textResult;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//设置采用哪一个布局文件//实例化每个按钮 通过每个按钮的id进行实例化创建btnOne = (Button) findViewById(R.id.btnOne);btnTwo = (Button) findViewById(R.id.btnTwo);btnThree = (Button) findViewById(R.id.btnThree);btnFour = (Button) findViewById(R.id.btnFour);btnFive = (Button) findViewById(R.id.btnFive);btnSix = (Button) findViewById(R.id.btnSix);btnSeven = (Button) findViewById(R.id.btnSeven);btnEight = (Button) findViewById(R.id.btnEight);btnNine = (Button) findViewById(R.id.btnNine);btnZero = (Button) findViewById(R.id.btnZero);btnChu = (Button) findViewById(R.id.btnChu);btnAdd = (Button) findViewById(R.id.btnAdd);btnReduce = (Button) findViewById(R.id.btnReduce);btnMul = (Button) findViewById(R.id.btnMul);btnCLs = (Button) findViewById(R.id.btnCLs);btnDel = (Button) findViewById(R.id.btnDel);btnEquals = (Button) findViewById(R.id.btnEquals);btnPoint = (Button) findViewById(R.id.btnPoint);textResult = (TextView)findViewById(R.id.textResult);//设置每个按钮的点击事件即监听按钮btnOne.setOnClickListener(this);btnTwo.setOnClickListener(this);btnThree.setOnClickListener(this);btnFour.setOnClickListener(this);btnFive.setOnClickListener(this);btnSix.setOnClickListener(this);btnSeven.setOnClickListener(this);btnEight.setOnClickListener(this);btnNine.setOnClickListener(this);btnZero.setOnClickListener(this);btnChu.setOnClickListener(this);btnAdd.setOnClickListener(this);btnReduce.setOnClickListener(this);btnMul.setOnClickListener(this);btnCLs.setOnClickListener(this);btnDel.setOnClickListener(this);btnEquals.setOnClickListener(this);btnPoint.setOnClickListener(this);}@Overridepublic void onClick(View view) {String str = textResult.getText().toString(); //获取当前textview文本switch (view.getId()) {case R.id.btnOne:case R.id.btnTwo:case R.id.btnThree:case R.id.btnFour:case R.id.btnFive:case R.id.btnSix:case R.id.btnSeven:case R.id.btnEight:case R.id.btnNine:case R.id.btnZero:case R.id.btnPoint:textResult.setText(str + ((Button) view).getText());break;case R.id.btnChu:case R.id.btnAdd:case R.id.btnReduce:case R.id.btnMul:textResult.setText(str + " " + ((Button) view).getText() + " ");break;case R.id.btnCLs:textResult.setText("");break;case R.id.btnDel:if(str != null && !str.equals("")){textResult.setText(str.substring(0,str.length()-1));   // substring(beginIndex, endIndex)  [beginIndex, endIndex)}                                                          //  str="123456"   str.substring(0,3) ="123";         "1237 + 10"break;case R.id.btnEquals:getresult();}}private void getresult() {String exp = textResult.getText().toString(); //从textview获取整个文本if(exp == null || exp.equals("")){return;}if(!exp.contains(" ")){return;}//将其中的两个数字和运算符分割出来float result = 0;                                                   // exp ="123 + 5"String num1 = exp.substring(0,exp.indexOf(" "));                      // num1 ="123"String ex = exp.substring(exp.indexOf(" ") + 1,exp.indexOf(" ") + 2); // ex="+"String num2 = exp.substring(exp.indexOf(" ") + 3);                    // num2="5"//如果两个数字都不为空则判断运算符进行运算if(!num1.equals("") && !num2.equals("")) {float d1 = Float.parseFloat(num1);float d2 = Float.parseFloat(num2);if (ex.equals("+")) {result = d1 + d2;} else if (ex.equals("-")) {result = d1 - d2;} else if (ex.equals("*")) {result = d1 * d2;} else if (ex.equals("÷")) {if (d2 == 0) {result = 0;} else {result = d1 / d2;}}textResult.setText(result + "");}else if(!num1.equals("") && num2.equals("")){textResult.setText(exp.substring(0,exp.indexOf(" ")));   //textResult.setText(exp);}else if(num1.equals("") && !num2.equals("")){float d3 = Float.parseFloat(num2);if(ex.equals("+")){result = 0 + d3;}else if(ex.equals("-")){result = 0 - d3;}else if(ex.equals("*")){result = 0 * d3;}else if(ex.equals("÷")){result = 0;}textResult.setText(result + "");}else{textResult.setText("");}}
}

四、总结

总体来说很不错,也实现了清除后面一个数的功能,但还未能实现负数的运算 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/65623.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt简易计算器的代码实现

大二用qt写的简易计算机&#xff0c;已经修改完bug,请放心食用 输入的时候一定用按钮&#xff0c;不要直接在文本框中输入 在qt中新建这几个文件&#xff0c;运行就OK了 main.cpp #include "calculator.h" #include <QApplication>int main(int argc, char *…

chatgpt赋能python:如何打开Python黑色界面

如何打开Python黑色界面 Python黑色界面是一个流行的Python环境编辑器。很多Python开发者首选Python黑色界面来编写和运行Python程序。但是&#xff0c;很多人还不知道如何打开Python黑色界面。在这篇文章中&#xff0c;我们将介绍如何打开Python黑色界面&#xff0c;以及一些…

【无标题】分享3款好用的简易视频剪辑软件

分享3款好用的小白视频剪辑软件 本人是个短视频爱好者&#xff0c;经常需要剪辑视频&#xff0c;在实际操作中发现&#xff0c;那些专业的视频剪辑软件操作非常复杂&#xff0c;不易操作&#xff0c;而且文件又大。那些简单的视频剪辑软件小而精巧&#xff0c;操作方便&#xf…

怎么剪切视频中的一部分?不如试试这个软件

怎么剪切视频中的一部分&#xff1f;我们在进行视频剪辑的时候&#xff0c;需要导入大量的素材&#xff0c;我们不可能完整的保留整段素材。通常情况下&#xff0c;我们需要对已有的素材进行编辑分割。这里小编就来给大家介绍在电脑上对视频进行分割的方法。 怎么剪切视频中的一…

小众但意外觉得蛮好用的剪辑软件!纯良心分享

爱剪辑 有开屏广告&#xff0c;一共3个界面&#xff1a;首页、剪同款、我的。 剪辑、配乐、字幕、滤镜、加速、贴纸、配音等主流功能都有。 特色功能有剪裁视频、倒放视频、视频旋转、视频转换GIF、转场、提取音频、画中画等。 还可以拼接视频&#xff0c;不过不支持FLV等小众文…

AI伪原创混剪软件脚本,短视频伪原创剪辑工具必备神器

AI伪原创混剪脚本&#xff0c;伪原创剪辑必备神器【永久脚本详细教程】 AI伪原创混剪软件脚本&#xff0c;短视频伪原创剪辑工具必备神器 设备需求&#xff1a;电脑 软件截图&#xff1a; -------------------------------- 文章分享者&#xff1a;Linxiaoyu2022 文章的来源…

剪映电脑版超简单使用教程Mac

相机 我主要用到的两个键 点击开始创作导入本地视频 导入本地视频 将素材拖拽到时间线上 时间线面板操作 撤销、恢复、分割 撤销上一次操作也可以用快捷键 command z 定格、倒放、镜像、裁剪 剃刀 点击菜单的分割可以出来一个剃刀&#xff0c;分割更方便 选择模式 …

创业创业,有点风险,读取数据做个商务分析

1、起因 过完年了,作为程序也很老了,所以想搞个副业看看,但是盲目的创业是不行的,鲁迅先生说过:方向大于努力,所以选对方向很重要,数据调研第一步,不能盲目出招,浪费时间,浪费精力,最主要浪费我的血汗钱。 上班的时间基本都在点外卖,所以想做做外卖,因为自己是小…

精选个人创业计划

精选个人创业计划精选篇1 一、企业概况 以突出“新鲜”“精致”为主要特色。坐落于河北区昆纬路的一个小店&#xff0c;主营鲜花与礼品的零售。它没有亮丽的装潢设计&#xff0c;而是着重朴实的风格&#xff0c;突出了产品的“精”与“美”&#xff0c;成为人们五彩斑斓生活中不…

创业合伙人十个核心问题

导读&#xff1a; 我们见到&#xff0c;很多创业企业的股权分配&#xff0c;都是“时间的错位”&#xff1a;根据创业团队当下的贡献&#xff0c;去分配公司未来的利益。创业初期&#xff0c;不好评估各自贡献&#xff0c;创业团队的早期出资就成了评估团队贡献的核心指标。这导…

技术人员如何创业(1)---产品及想法

不得不说这是个浮躁的社会&#xff0c;人人在这个社会都想暴富或者成名。在这些引诱的驱使下很多人都脱离了原来的稳定工作创业。前几天看了《中国合伙人》&#xff0c;故事讲到了几个大学生从校园到工作、再到创办了一个伟大的企业&#xff0c;这个故事更加激励了创业大军的壮…

创业第一步:如何写好商业计划书

即使你的项目不需要融资&#xff0c;你也把标准商业计划书作为一个工具模板来应用&#xff0c;帮助更全面的盘点你要做的事情。 撰写一份性感的商业计划书如同造房子&#xff1a;第一步是科学设计&#xff0c;打好结构&#xff08;有清晰的撰写逻辑&#xff09;&#xff1b;第…

html表白代码!

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>跳动爱心</title><style>*{padding: 0;margin: 0;}body{background-color: pink;}#frame{position: relative;width: 400px;height: 300px…

html表白代码大全_100条代码,拿去“表白”

❤ 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f482; 作者主页: 【进入主页—&#x1f680;获取更多源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;HTML5网页期末作业 (1000套) 】 &#x1…

html表白代码

目录 一.引言二.表白效果展示1.惊喜表白2.烟花表白3.玫瑰花表白4.心形表白5.心加文字6.炫酷的特效 三.点赞收藏评论找我拿源码(24小时之内回复) 一.引言 我们可以用一下好看的网页来表白&#xff0c;下面就有我觉得很有趣的表白代码。评论直接找我要源码也行。(收藏➕点赞) 二.…

表白专用代码拿走不谢

%数学之心 figure; clc; x-2:0.01:2; ysqrt(2*sqrt(x.^2)-x.^2); zasin(abs(x)-1)-pi./2; plot(x,y); grid on; hold on;%在一个图中画多个图 plot(x,z); title(); legend(心);2021.2.25追加 <!DOCTYPE html> <html lang"en"> <head><meta cha…

一个贼简单的代码表白

前一阵网上挺火的各种表白代码&#xff0c; 自己学着也做了一个 记事本编写&#xff0c;后缀改为vbs 就能运行了。 &#xff08;文章最后边有个百度云盘链接&#xff0c;可以直接下载。或者去我上传的资源也能免费下载&#xff09; &#xff08;其中有一串代码会关机的呦&#…

html,实现心动的表白代码

今天看到多年年前的大佬写的 js表白代码&#xff0c;觉得不错&#xff0c;分析给大家 代码在这宫里 Love <link type"text/css" rel"stylesheet" href"./Love_files/default.css"><script type"text/javascript" src".…

用Python给学弟准备追女神要用的多种流行的表白爱心代码【源码】

本文将介绍利用Python画多种不同的爱心形态&#xff0c;表白代码看这一篇文章就够啦&#xff0c;有感兴趣的朋友可以收藏起来。 1、三维爱心 效果图&#xff1a; 首先安装matplotlib 参考代码&#xff1a; #!/usr/bin/env python3 from mpl_toolkits.mplot3d import Axes3…

表白代码,HTML

1.在电脑桌面右击鼠标选择新建--文本文档 2.并命名为&#xff1a;biaobai.txt 3.打开并且把一下代码复制并粘贴到biaobai.txt <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd…