android计算器按钮循环创建,Android简单计算器的实现

本文档详述了如何在Android环境中开发一个具备加减乘除功能的计算器应用。通过使用表格布局创建计算器界面,并监听各个按钮的点击事件,实现了数字输入、运算选择及结果显示的功能。同时,代码中包含了错误处理,如除数为零的情况。
摘要由CSDN通过智能技术生成

本案例实现了具有加减乘除功能的计算器,效果图如下:

80b48632133abcc12bbcc1eeb68cbd74.png

涉及到的知识点主要有:利用表格布局实现计算器页面,监听计算器按钮的点击

实现的具体过程如下:

创建一个Android项目,修改mainActive.xml代码如下:

修改mainActive.java代码如下:

package com.example.counter.hfeng;

import android.provider.Settings;

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends ActionBarActivity {

TextView tv;

int[] buttons; //数字按钮数组

float result;

float result0;

float result1;

//按钮对象声明

Button buttonC;

Button buttonJia;

Button buttonJian;

Button buttonCheng;

Button buttonChu;

Button buttonDengyu;

String str1; //旧输入的值

String str2; //新输入的值

int flag=0; //计算标志位,0第一次输入;1加; 2减; 3乘; 4除; 5等于

Button temp;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initButton();

//清空按钮点击事件

buttonC.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

str1 = "";

str2 = "";

tv.setText("0");

result = 0;

result1 = 0;

result0 = 0;

flag = 0;

}

});

//监听

for(int i=0;i<8;i++){

for (int i1 = 0; i1 < buttons.length; i1++){

temp = getBtnForId(buttons[i1]);

temp.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (flag != 0){//不是第一次

str1 = "";

}else {//第一次

str1 = tv.getText().toString().trim();

if (str1.equals("0")){

str1 = "";

}

}

str1 = str1 + String.valueOf(((Button)view).getText()); //获取新值

tv.setText(str1);

}

});

}

}

buttonListener(buttonJia, 1);

buttonListener(buttonJian, 2);

buttonListener(buttonCheng, 3);

buttonListener(buttonChu, 4);

for(int i=0;i<8;i++){

for (int i1 = 0; i1 < buttons.length; i1++){

temp = getBtnForId(buttons[i1]);

temp.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

//第一次

str1 = tv.getText().toString().trim();

if (str1.equals("0")){

str1 = "";

}

str1 = str1 + String.valueOf(((Button)view).getText()); //获取新值

tv.setText(str1);

}

});

}

}

buttonDengyu.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

result1 = Integer.parseInt(str1);

if (flag == 1){

result = result0 + result1;

}else if (flag == 2){

result = result0 - result1;

}else if (flag == 3){

result = result0 * result1;

}else if (flag == 4){

if (result1 == 0){

Toast.makeText(MainActivity.this, "除数不能为0", Toast.LENGTH_SHORT).show();

}else {

result = result0 / result1;

}

}else if (flag == 0){

result = result1;

}

String str = (result + "").trim();

if (result1 == 0 && flag == 4){

str = "除数不能为0";

}else{

tv.setText(str);

Toast.makeText(MainActivity.this, "结果是:" + result, Toast.LENGTH_SHORT).show();

}

}

});

}

//初始化控件资源

public void initButton(){

tv = (TextView)this.findViewById(R.id.tv);

str1 = String.valueOf(tv.getText());

str2 = "";

buttonC = getBtnForId(R.id.ButtonC);

buttonJia = getBtnForId(R.id.ButtonJia);

buttonJian = getBtnForId(R.id.ButtonJian);

buttonCheng = getBtnForId(R.id.ButtonCheng);

buttonChu = getBtnForId(R.id.ButtonChu);

buttonDengyu = getBtnForId(R.id.ButtonDeng);

buttons = new int[]{

R.id.Button00,R.id.Button01,R.id.Button02,

R.id.Button03,

R.id.Button04,R.id.Button05,R.id.Button06,

R.id.Button07,R.id.Button08,R.id.Button09

};

}

//根据id获取Button

public Button getBtnForId(int rID){

Button btn = (Button)this.findViewById(rID);

return btn;

}

//按钮监听

public void buttonListener(Button button, final int id){

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

String str = tv.getText().toString().trim();

result0 = Float.parseFloat(str);

tv.setText("0");

flag = id;

}

});

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值