用Android Studio 编写简易计算器

  • 界面设计
  • 功能的實現
  • 其他配置
    • 1.頂部標題
    • 2.修改測試

这是用Android Studio编写的 简易计算器 。功能主要是实现简单的加减操作,以及比较复杂的四则运算。

话不多说请看设计!

界面设计


在layout下面的calu.xml文件進行設計,推荐使用线性布局。沒有的先自行创建文件。

源码如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/textResult"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="right"android:text="请输入:"android:textSize="30sp" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/buttonC"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"android:text="C" /><Buttonandroid:id="@+id/buttonDEL"android:layout_width="0dp"android:layout_weight="2"android:layout_height="wrap_content"android:text="DEL" /><Buttonandroid:id="@+id/buttonADD"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"android:text="+" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/button1"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:onClick="myClick"android:text="1" /><Buttonandroid:id="@+id/button2"android:layout_width="0dp"android:layout_weight="1"android:onClick="myClick"android:layout_height="wrap_content"android:text="2" /><Buttonandroid:id="@+id/button3"android:layout_width="0dp"android:layout_weight="1"android:onClick="myClick"android:layout_height="wrap_content"android:text="3" /><Buttonandroid:id="@+id/buttonSUB"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"android:text="-" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/button4"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:onClick="myClick"android:text="4" /><Buttonandroid:id="@+id/button5"android:layout_width="0dp"android:layout_weight="1"android:onClick="myClick"android:layout_height="wrap_content"android:text="5" /><Buttonandroid:id="@+id/button6"android:layout_width="0dp"android:layout_weight="1"android:onClick="myClick"android:layout_height="wrap_content"android:text="6" /><Buttonandroid:id="@+id/buttonMUL"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"android:text="*" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/button7"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:onClick="myClick"android:text="7" /><Buttonandroid:id="@+id/button8"android:layout_width="0dp"android:layout_weight="1"android:onClick="myClick"android:layout_height="wrap_content"android:text="8" /><Buttonandroid:id="@+id/button9"android:layout_width="0dp"android:layout_weight="1"android:onClick="myClick"android:layout_height="wrap_content"android:text="9" /><Buttonandroid:id="@+id/buttonDIV"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"android:text="/" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/buttonZero"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:onClick="myClick"android:text="0" /><Buttonandroid:id="@+id/buttonPoint"android:layout_width="0dp"android:layout_weight="1"android:onClick="myClick"android:layout_height="wrap_content"android:text="." /><Buttonandroid:id="@+id/buttonResult"android:layout_width="0dp"android:layout_weight="2"android:layout_height="wrap_content"android:text="=" /></LinearLayout></LinearLayout>

功能的實現

代码如下:

package com.example.a124240.myapplication;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;/*** Created by qiaolong 2021/3/20.*/public class MainActivity extends AppCompatActivity {private TextView textResult;private Button buttonAdd, buttonSub, buttonMul, buttonDiv, buttonDel, buttonCle, buttonRes;// 定义里一个字符串private StringBuffer digital1 = new StringBuffer(), digital2 = new StringBuffer(), digital3 = new StringBuffer();private boolean isChar = false;private boolean isDigital1 = true;private boolean flag1 = false;private float result;private String signal;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.setContentView(R.layout.calu1);// textResult = (TextView) this.findViewById(R.id.textResult);//实例化init();//加法buttonAdd.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(digital1.length() == 0){return;}isChar = true;textResult.setText("0");if (flag1){float a = Float.parseFloat(digital1.toString());float b = Float.parseFloat(digital2.toString());mySignal(signal,a,b);//进行 浮点型向stringbuffer的转换【float->string->stringbuffer】String s1 = Float.toString(result);digital1= new StringBuffer(s1);textResult.setText(digital1);digital2 = new StringBuffer();}else {textResult.setText(digital1);}signal = "+";flag1 = true;}});//减法buttonSub.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(digital1.length() == 0){return;}isChar = true;textResult.setText("0");if (flag1){float a = Float.parseFloat(digital1.toString());float b = Float.parseFloat(digital2.toString());mySignal(signal,a,b);textResult.setText("0");//进行 浮点型向stringbuffer的转换【float->string->stringbuffer】String s1 = Float.toString(result);digital1= new StringBuffer(s1);textResult.setText(digital1);digital2 = new StringBuffer();}signal = "-";flag1 = true;}});//乘法buttonMul.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(digital1.length() == 0){return;}isChar = true;textResult.setText("0");if (flag1){float a = Float.parseFloat(digital1.toString());float b = Float.parseFloat(digital2.toString());mySignal(signal,a,b);textResult.setText("0");//进行 浮点型向stringbuffer的转换【float->string->stringbuffer】String s1 = Float.toString(result);digital1= new StringBuffer(s1);textResult.setText(digital1);digital2 = new StringBuffer();}signal = "*";flag1 = true;}});//除法buttonDiv.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(digital1.length() == 0){return;}isChar = true;textResult.setText("0");if (flag1){float a = Float.parseFloat(digital1.toString());float b = Float.parseFloat(digital2.toString());mySignal(signal,a,b);textResult.setText("0");//进行 浮点型向stringbuffer的转换【float->string->stringbuffer】String s1 = Float.toString(result);digital1= new StringBuffer(s1);textResult.setText(digital1);digital2 = new StringBuffer();}signal = "/";flag1 = true;}});//等号buttonRes.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(digital1.length() == 0 || digital2.length() == 0){return;}float a = Float.parseFloat(digital1.toString());float b = Float.parseFloat(digital2.toString());mySignal(signal,a,b);isChar = false;flag1 = false;//进行 数字向stringbuffer的转换【float->string->stringbuffer】String s1 = Float.toString(result);digital1= new StringBuffer(s1);textResult.setText(digital1);digital2 = new StringBuffer();}});//清除全部buttonCle.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(isDigital1&&(!digital1.equals(null))){digital1 = new StringBuffer("");digital2 = new StringBuffer("");} else {digital1 = new StringBuffer("");digital2 = new StringBuffer("");}isChar = false;flag1 = false;textResult.setText("0");}});//清除一个buttonDel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (isDigital1) {if (digital1.length() > 0) {String temp = digital1.substring(0, digital1.length() - 1);//存疑digital1 = new StringBuffer();digital1.append(temp);textResult.setText(digital1.toString());} else {digital1 = new StringBuffer();textResult.setText("0");}}else{if (digital2.length() > 0) {String temp = digital2.substring(0,digital2.length() - 1);digital2 = new StringBuffer();digital2.append(temp);textResult.setText(digital2.toString());}}}});}//实例化void init(){//buttonSub, buttonMul, buttonDiv, buttonDel, buttonCle, buttonRes;textResult = (TextView) this.findViewById(R.id.textResult);buttonAdd = (Button) this.findViewById(R.id.buttonADD);  //强制类型转换buttonSub = (Button) this.findViewById(R.id.buttonSUB);buttonMul = (Button) this.findViewById(R.id.buttonMUL);buttonDiv = (Button) this.findViewById(R.id.buttonDIV);buttonDel = (Button) this.findViewById(R.id.buttonDEL);buttonCle = (Button) this.findViewById(R.id.buttonC);buttonRes = (Button) this.findViewById(R.id.buttonResult);}//关于符号void mySignal(String s,float a,float b){switch (s) {case "+":result = a + b;break;case "-":result = a - b;break;case "*":result = a * b;break;case "/":result = a / b;break;}}public void myClick(View v) {switch (v.getId()) {case R.id.button1:if (isChar){digital2.append("1");textResult.setText(digital2);}else {digital1.append("1");textResult.setText(digital1);}break;case R.id.button2:if (isChar){digital2.append("2");textResult.setText(digital2);}else {digital1.append("2");textResult.setText(digital1);}break;case R.id.button3:if (isChar){digital2.append("3");textResult.setText(digital2);}else {digital1.append("3");textResult.setText(digital1);}break;case R.id.button4:if (isChar){digital2.append("4");textResult.setText(digital2);}else {digital1.append("4");textResult.setText(digital1);}break;case R.id.button5:if (isChar){digital2.append("5");textResult.setText(digital2);}else {digital1.append("5");textResult.setText(digital1);}break;case R.id.button6:if (isChar){digital2.append("6");textResult.setText(digital2);}else {digital1.append("6");textResult.setText(digital1);}break;case R.id.button7:if (isChar){digital2.append("7");textResult.setText(digital2);}else {digital1.append("7");textResult.setText(digital1);}break;case R.id.button8:if (isChar){digital2.append("8");textResult.setText(digital2);}else {digital1.append("8");textResult.setText(digital1);}break;case R.id.button9:if (isChar){digital2.append("9");textResult.setText(digital2);}else {digital1.append("9");textResult.setText(digital1);}break;case R.id.buttonZero:if (isChar){digital2.append("0");textResult.setText(digital2);}else {digital1.append("0");textResult.setText(digital1);}break;case R.id.buttonPoint:if (isChar){  //点了 + 号digital2.append("."); //textResult.setText(digital2);}else {digital1.append(".");textResult.setText(digital1);}break;}}}

其他配置

1.頂部標題

打開Java—res—string.xml 更換計算器的頂部

2.修改測試


欢迎大家一起交流!

用Android Studio 编写简易计算器相关推荐

  1. android studio线性布局做计算器,Android studio设计简易计算器

    本文实例为大家分享了Android studio设计简易计算器的具体代码,供大家参考,具体内容如下 效果显示: 第一步,简单的界面布局 xmlns:tools="http://schemas ...

  2. android计算器设计步骤,Android Studio的简易计算器界面设计

    一.题目 1.如图所示(实际设计,类似此界面样式即可,全屏时,按钮将会纵向拉伸),利用网格布局管理器设计一个居中.满屏计算器,项目名称:clc666b:(666,改成自己的实际编号) 2.加.乘分别用 ...

  3. 用Android Studio编写简易闹钟(一)

    一.闹钟功能的介绍以及界面的展示 该闹钟是根据我们手机闹钟设计的一个简单的闹钟APP,其中包含时钟.闹钟.秒表和计时器功能.用户可以对闹钟添加和删除,可以对秒表计时.暂停和重置,对计时器可以暂停.计时 ...

  4. Android开发应用案例——简易计算器(附完整源码)

    Android开发-AS学习(一) Android开发-AS学习(二) 使用android studio开发简易计算器app(完整源码可在博主资源中自行下载) 最终效果: 开发步骤: 创建一个名为ca ...

  5. android页面布局计算机,Android Studio制作简单计算器App

    Android Studio制作简单计算器App 计算机界面如图: 程序设计步骤: (1)在布局文件中声明编辑文件框EditText,按钮Button等组件. (2)在MainActivity中获取组 ...

  6. Android Studio编写运行测试纯java代码可带main()函数

    问题 小伙伴们在做安卓项目的时候,是不是有时候会忘记某些api的使用方法,不太确定他们的结果是怎样的,需要写一些测试代码,验证看看我们的写法是否正确.刚开始的时候我是在页面上写一个Button,添加点 ...

  7. 使用Android Studio编写一个简单的音乐盒

    文章目录 一.知识要点 二.xml代码 activity_main.xml 三.java代码 MainActivity.java MusicService.java 四.运行界面展示 五. 源码Git ...

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

    Android Android入门之简易计算器(一) 文章目录 Android Android入门之简易计算器(一) @[TOC](文章目录) 前言 一.项目结构 二.界面显示 三.前端界面 1.界面 ...

  9. 在Android Studio编写代码时,使用MaterialCardView的项目无法正常运行怎么办?简简单单搞定它_莫韵乐与bug的奇妙冒险

    在Android Studio编写代码时,使用MaterialCardView布局的项目闪退怎么办?简简单单搞定它 当我想用MaterialCardView去做一个好看的界面的时候,应用居然闪退了 经 ...

最新文章

  1. ACdream 1083 有向无环图dp
  2. UA MATH564 概率分布1 二项分布下
  3. Win2000 DDK 附带例子概览(图解)
  4. iOS底层探索(二) - 写给小白看的Clang编译过程原理
  5. 服务器被bash服务占满_用bash脚本自动下载ftp服务器文件
  6. DATE_FORMAT、when case函数用法
  7. 摄影测量学——航摄像片的内、外方位元素和像点空间直角坐标变换与中心投影构像方程
  8. XML Schema 简介
  9. WiFi图标在任务栏里不见了,提示:适配器Qualcomn Atheros QCA9377 Wireless Network Adapter遇到驱动程序或硬件相关的问题
  10. 速领,阿里巴巴Java开发手册终极版
  11. 为什么会有hash冲突?
  12. 苹果Mac3D建模软件SketchUp Pro很专业
  13. git 代码行数统计
  14. HJ82 将真分数分解为埃及分数(需要知道求埃及数的数学方法)
  15. 100条超实用微信营销技巧:公众号、朋友圈和微信营销
  16. Excel中按多个符号进行分列
  17. ffmpeg缩放视频尺寸
  18. 怎样才能胜任技术总监
  19. R语言 读写带分隔符的文件
  20. 新浪微博第三方登录,显示重定向错误问题

热门文章

  1. 上周热点回顾(4.22-4.28)
  2. tomcat 配置腾讯云/阿里云ssl证书
  3. ANHPD谐波保护器在医院行业的应用-安科瑞薛炯毅
  4. 洛谷 P4070 [SDOI2016]生成魔咒 后缀自动机
  5. 老鼠有望“长出”人类脏器?日本批准首例人—动物胚胎实验
  6. CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT‘ undeclared (first use in this function)
  7. 阿里巴巴举办“马来西亚国家周”,半年帮助2651家小企业!
  8. linux下查看文件的修改时间和文件大小排序排列
  9. java facets_Eclipse的Project Facets属性设置解决项目无故报错
  10. 使用mapbox地图的一丢丢小心得