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

目标效果:

通过编写代码,可以实现整数和小数的加减乘除运算,以及删除和清空的功能。

1.页面中Button使用的是线性布局,最外边一个是父布局,第一行C,DEL,/,*为第一个子布局,第二行7,8,9,-为第二个子布局,第三行4,5,6,+为第三个子布局,第四五行为第四个子布局,第四个子布局中还有两个相当于是孙布局的级别,1,2,3为第一个孙布局,0和.为第二个孙布局,=在两个孙布局之外第四个子布局以内。因为计算器的水平竖直排列十分鲜明,所以可以用线性布局,当然也可以用表格布局来进行排布。

2.activity_main.xml页面用于存放所有控件。

activity_main.xml页面:

android:layout_width="fill_parent"

android:layout_marginTop="40dp"

android:layout_height="fill_parent"

android:orientation="vertical" >

android:id="@+id/etInput"

android:layout_width="310dp"

android:layout_height="60dip"

android:editable="false" //代表不能进行键盘输入

android:gravity="right" //文字靠右边

android:layout_gravity="center"

android:background="@drawable/white_bg"/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_marginTop="5dp"

android:gravity="center_horizontal"

android:orientation="horizontal" >

android:id="@+id/btClear"

android:background="@drawable/white_select" //设置按钮的背景,为一个xml文件

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="C" />

android:id="@+id/btDel"

android:background="@drawable/white_select"

android:layout_marginLeft="5dp"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="DEL" />

android:id="@+id/btDivide"

android:background="@drawable/white_select"

android:layout_marginLeft="5dp"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="/" />

android:id="@+id/btMul"

android:background="@drawable/white_select"

android:layout_marginLeft="5dp"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="*" />

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_marginTop="5dp"

android:gravity="center_horizontal"

android:orientation="horizontal" >

android:id="@+id/btSeven"

android:background="@drawable/white_select"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="7" />

android:id="@+id/btEight"

android:background="@drawable/white_select"

android:layout_marginLeft="5dp"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="8" />

android:id="@+id/btNine"

android:background="@drawable/white_select"

android:layout_marginLeft="5dp"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="9" />

android:id="@+id/btJian"

android:background="@drawable/white_select"

android:layout_marginLeft="5dp"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="-" />

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_marginTop="5dp"

android:gravity="center_horizontal"

android:orientation="horizontal" >

android:id="@+id/btFour"

android:background="@drawable/white_select"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="4" />

android:id="@+id/btFive"

android:background="@drawable/white_select"

android:layout_marginLeft="5dp"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="5" />

android:id="@+id/btSix"

android:background="@drawable/white_select"

android:layout_marginLeft="5dp"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="6" />

android:id="@+id/btJia"

android:background="@drawable/white_select"

android:layout_marginLeft="5dp"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="+" />

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_marginTop="5dp"

android:gravity="center_horizontal"

android:orientation="horizontal" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="horizontal" >

android:id="@+id/btOne"

android:background="@drawable/white_select"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="1" />

android:id="@+id/btTwo"

android:background="@drawable/white_select"

android:layout_marginLeft="5dp"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="2" />

android:id="@+id/btThree"

android:background="@drawable/white_select"

android:layout_marginLeft="5dp"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="3" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="5dp"

android:orientation="horizontal" >

android:id="@+id/btZero"

android:background="@drawable/white_select"

android:layout_width="155dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="0" />

android:id="@+id/btPoint"

android:background="@drawable/white_select"

android:layout_marginLeft="5dp"

android:layout_width="75dp"

android:layout_height="60dp"

android:textSize="20sp"

android:text="." />

android:layout_width="75dp"

android:background="@drawable/orange_select"

android:layout_height="125dp"

android:text="="

android:layout_marginLeft="5dp"

android:textSize="20sp"

android:gravity="center"

android:id="@+id/btEqu">

2.等号按钮和其余按钮的背景及点击效果不同。orange_select.xml页面是等号按钮的背景页面。

orange_select.xml页面:

3.orange_bg.xml页面:

4.khaki.xml页面:

5.white_select.xml页面是其余按钮的背景页面。

white_select页面:

6.white_bg.xml页面:

7.gray_bg.xml页面:

8.MainActivity.java处理按钮的点击事件以及数值运算。

MainActivity.java页面:

package com.example.jisuanqi;

import android.os.Bundle;

import android.app.Activity;

import android.util.Log;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

public class MainActivity extends Activity implements OnClickListener{

private EditText etInput; //实例输入框

private Button btOne; //实例所有按钮

private Button btTwo;

private Button btThree;

private Button btFour;

private Button btFive;

private Button btSix;

private Button btSeven;

private Button btEight;

private Button btNine;

private Button btZero;

private Button btPoint;

private Button btJia;

private Button btJian;

private Button btMul;

private Button btDivide;

private Button btEqu;

private Button btClear;

private Button btDel;

boolean clear_flag; //清空标识,当用户点击等号完成一次运算时进行清空

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

etInput=(EditText) findViewById(R.id.etInput); //获取输入框的id

btOne=(Button) findViewById(R.id.btOne); //获取所有按钮的id

btTwo=(Button) findViewById(R.id.btTwo);

btThree=(Button) findViewById(R.id.btThree);

btFour=(Button) findViewById(R.id.btFour);

btFive=(Button) findViewById(R.id.btFive);

btSix=(Button) findViewById(R.id.btSix);

btSeven=(Button) findViewById(R.id.btSeven);

btEight=(Button) findViewById(R.id.btEight);

btNine=(Button) findViewById(R.id.btNine);

btZero=(Button) findViewById(R.id.btZero);

btPoint=(Button) findViewById(R.id.btPoint);

btJia=(Button) findViewById(R.id.btJia);

btJian=(Button) findViewById(R.id.btJian);

btMul=(Button) findViewById(R.id.btMul);

btDivide=(Button) findViewById(R.id.btDivide);

btEqu=(Button) findViewById(R.id.btEqu);

btClear=(Button) findViewById(R.id.btClear);

btDel=(Button) findViewById(R.id.btDel);

btOne.setOnClickListener(this); //设置点击事件,因为MainActivity已经实现了OnClickListener接口,所以只需要参数只需要传this

btTwo.setOnClickListener(this);

btThree.setOnClickListener(this);

btFour.setOnClickListener(this);

btFive.setOnClickListener(this);

btSix.setOnClickListener(this);

btSeven.setOnClickListener(this);

btEight.setOnClickListener(this);

btNine.setOnClickListener(this);

btZero.setOnClickListener(this);

btPoint.setOnClickListener(this);

btJia.setOnClickListener(this);

btJian.setOnClickListener(this);

btMul.setOnClickListener(this);

btDivide.setOnClickListener(this);

btEqu.setOnClickListener(this);

btClear.setOnClickListener(this);

btDel.setOnClickListener(this);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

String etinput=etInput.getText().toString(); //获取输入框中的内容并转化为String类型

switch(v.getId()){ //判断点击按钮的id

case R.id.btZero:

case R.id.btOne:

case R.id.btTwo:

case R.id.btThree:

case R.id.btFour:

case R.id.btFive:

case R.id.btSix:

case R.id.btSeven:

case R.id.btEight:

case R.id.btNine:

case R.id.btPoint:

if(clear_flag){

clear_flag=false;

etinput="";

etInput.setText("");

}

etInput.setText(etinput+((Button)v).getText()); //点击数字和小数点直接显示内容

break;

case R.id.btJia:

case R.id.btJian:

case R.id.btMul:

case R.id.btDivide:

if(clear_flag){

clear_flag=false;

etinput="";

etInput.setText(""); //当clear_flag为true时进入if语句,并可以清空,代表用户点击了等于号完成一次运算,并使clear_flag变成了true

}

etInput.setText(etinput+" "+((Button)v).getText()+" "); //点击运算符也是直接显示,但是为了后边运算要在运算符两侧加上空格

break;

case R.id.btDel:

if(clear_flag){

clear_flag=false;

etinput="";

etInput.setText("");

}else if(etinput!=null&&!etinput.equals("")){

etInput.setText(etinput.substring(0,etinput.length()-1)); //如果输入框内容不为空,则去掉最后一位

}

break;

case R.id.btClear:

clear_flag=false;

etinput="";

etInput.setText(""); //直接设置输入框为空

break;

case R.id.btEqu:

getResult(); //点击等号调用getResult()方法

break;

}

}

public void getResult(){

String exp=etInput.getText().toString(); //获取输入框的内容

if(exp==null||exp.equals("")){

return;

}

if(!exp.contains(" ")){ //判断输入框是否包含空格,也就是没有点击运算符

return;

}

if(clear_flag){ //点击等号clear_flag为true,当再点击别的数字或运算符时才会变为false,如果连续点击等号,则第二次点击无效,直接返回

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类型

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){ //判断除数为0的情况

result=0;

}else{

result=d1/d2;

}

}

if(!s1.contains(".")&&!s2.contains(".")&&!op.equals("/")){ //如果两个数都是整形,那么结果就需要显示为整数

int r=(int)result; //将String型计算结果强制转换为整形

etInput.setText(r+"");

}else{

etInput.setText(result+"");

}

}else if(!s1.equals("")&&s2.equals("")){ //如果用户输入一个数字就点击运算符,那么将不计算

etInput.setText(exp);

}else if(s1.equals("")&&!s2.equals("")){ //如果一上来就点击运算符并输入第二个数,那么第一个数默认为0

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(".")&&!op.equals("/")){

int r=(int)result;

etInput.setText(r+"");

}else{

etInput.setText(result+"");

}

}else{

etInput.setText("");

}

}

}

9.程序完成就可以运行了。因为是简易计算器,所以还不能进行连续的加减乘除。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

简单的android小程序计算机,Android实现简易计算器小程序相关推荐

  1. vue简易计算器小案例09

    简易计算器小案例 逻辑部分没有完全实现,主要用来练手,加强理解父子组件之间的通信过程. 效果: 简易计算器代码 counter.html <!DOCTYPE html> <html ...

  2. python计算器简单代码_Python之三十行代码实现简易计算器

    实现的简易计算器如下: 完整的代码如下: from tkinter import * from math import exp,log,sin,cos,tan class Calculator: de ...

  3. java怎么做简易的游戏,Java小项目之《简易桌面小游戏》

    注意小球的运动范围,规定向右为正,如果不限定范围小球可能会跑出银河系-所以限定小球碰到左面左右回弹 画完窗口后运行若还是一片空白可以先最大化然后最小化解决 代码目录 实现代码 import java. ...

  4. python计算器小程序源码_python代码编写计算器小程序

    本文实例为大家分享了python计算器小程序的具体代码,供大家参考,具体内容如下 import tkinter import tkinter.messagebox import math class ...

  5. java体重指数计算器程序_java 学习 ——计算器小程序

    简易计算器小程序代码: package jisuanqi; //声明需要插入的包 import java.awt.*; import java.lang.Object; import java.lan ...

  6. C++实现简易计算器(正则表达式计算)

    说明:简单高效的C++代码,实现简易计算器(正则表达式计算),允许小数.括号.但没有表达式正误检验功能,所以测试前请确保式子正确哦 数据结构:栈 示范输入: ((1.5+2.5)*3-4)+5 42/ ...

  7. java 计算器 小程序_java 学习 ——计算器小程序

    简易计算器小程序代码: package jisuanqi; //声明须要插入的包 import java.awt.*; import java.lang.Object; import java.lan ...

  8. python分数计算器_python算法——方程计算器小工具

    python算法--方程计算器小工具 工具介绍 方程计算器小工具使用python开发,可实现三元以内一次.二次等方程的计算,包含基本计算器的功能.可用于老师.学生.家长等快速验证方程的求解,检查学生作 ...

  9. Android小程序-简易计算器的实现

    目标效果:   通过编写代码,可以实现整数和小数的加减乘除运算,以及删除和清空的功能. 1.页面中Button使用的是线性布局,最外边一个是父布局,第一行C,DEL,/,*为第一个子布局,第二行7,8 ...

最新文章

  1. 五分钟搞定VS2017+TensorRT环境搭建
  2. 用 Redis 搞定游戏中的实时排行榜,附源码!
  3. python如何输入数字赋值_三、python语法(定义,赋值,注释,输入输出)
  4. 45号:公钥,私钥和数字签名
  5. boost::function_types::is_function用法的测试程序
  6. SAP Spartacus全局配置模块里和layoutSlot相关的配置
  7. 电脑技巧:键盘上的这几个键,不常用,但有必要了解一下!
  8. pkill mysql_每天一个linux命令:kill命令
  9. 终于有人把超融合和边缘计算说清楚了
  10. java spring多数据源配置文件_深入理解spring多数据源配置
  11. 强核问世:NVIDIA发布A100 80GB GPU,为AI超级计算带来全球最强GPU
  12. printf是如何实现变长参数的
  13. 易于查阅,幕布记忆思维导图
  14. CENTOS 7 完全硬盘安装及使用 1
  15. echarts饼图自动动画_echarts实时旋转饼图效果特效
  16. Android基础课程:第三方视频播放器(播放网络资源)
  17. 令人头痛的WH_CBT钩子,使窗口前置——泪水+汗水的赞歌
  18. 【四】狂神Java笔记-面向对象
  19. 即刻报名|飞桨黑客马拉松第三期盛夏登场,等你挑战
  20. There were errors checking the update sites: SSLHandshakeException: sun.secu解决方案

热门文章

  1. safari对z-index的兼容性
  2. 嵌入式系统和物联网中的软件安全
  3. 三方协议中的服务器,手把手教你三方协议怎么填
  4. java打印小票的时间_Java编程打印购物小票实现代码
  5. [*CTF2022]web题目复现及wp
  6. 2019年最新的一波手机APP分享,每一个都是大家的菜哦!
  7. 所见所得的OFFICE功能区编辑器(自定义界面编辑)RibbonCreator
  8. c++之十进制转二进制
  9. animation和transition的区别及使用
  10. 微课 展示 php 源码,PHP从零基础到项目实战(微课视频版)