activity_main.xml

<?xml version="1.0" encoding="utf-8"?>        

MainActivity.java

package com.example.tlj;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity {    private Button[] btnNum = new Button[11];// 数值按钮,用数组存储    private Button[] btnOperator = new Button[5];// 符号按钮,用数组存储    private TextView textView = null;// 显示区域    private Button btnClear = null; // clear按钮    private static String operator; // 用于保存运算符    private boolean clearFlag; // 用于判断是否清空显示区域的值,true需要,false不需要    private boolean firstFlag; // 用于判断是否是首次输入,true首次,false不是首次    private double result; // 计算结果    public MainActivity() {        // 初始化各项值        result = 0; // x的值        firstFlag = true; // 是首次运算        clearFlag = false; // 不需要清空        operator = "="; // 运算符    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 获取运算符        btnOperator[0] = (Button) findViewById(R.id.plus);        btnOperator[1] = (Button) findViewById(R.id.subtract);        btnOperator[2] = (Button) findViewById(R.id.multiply);        btnOperator[3] = (Button) findViewById(R.id.divide);        btnOperator[4] = (Button) findViewById(R.id.equal);        // 获取数字        btnNum[0] = (Button) findViewById(R.id.num0);        btnNum[1] = (Button) findViewById(R.id.num1);        btnNum[2] = (Button) findViewById(R.id.num2);        btnNum[3] = (Button) findViewById(R.id.num3);        btnNum[4] = (Button) findViewById(R.id.num4);        btnNum[5] = (Button) findViewById(R.id.num5);        btnNum[6] = (Button) findViewById(R.id.num6);        btnNum[7] = (Button) findViewById(R.id.num7);        btnNum[8] = (Button) findViewById(R.id.num8);        btnNum[9] = (Button) findViewById(R.id.num9);        btnNum[10] = (Button) findViewById(R.id.point);        // 初始化显示结果区域        textView=(TextView) findViewById(R.id.Result);        textView.setText("0.0");        // 实例化监听器对象        NumberAction na = new NumberAction();        OperatorAction oa = new OperatorAction();        for (Button bc : btnOperator) {            bc.setOnClickListener((View.OnClickListener) oa);        }        for (Button bc : btnNum) {            bc.setOnClickListener((View.OnClickListener) na);        }        // clear按钮的动作        btnClear = (Button) findViewById(R.id.clear);        btnClear.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                textView.setText("0.0");                // 初始化各项值                result = 0; // x的值                firstFlag = true; // 是首次运算                clearFlag = false; // 不需要清空                operator = "="; // 运算符            }        });    }    //数字按钮监听器    private class NumberAction implements View.OnClickListener {        @Override        public void onClick(View view) {            Button btn = (Button) view;            String input = btn.getText().toString();            if (firstFlag) { // 首次输入                // 一上就".",就什么也不做                if (input.equals(".")) {                    return;                }                // 如果是"0.0"的话,就清空                if (textView.getText().toString().equals("0.0")) {                    textView.setText("");                }                firstFlag = false;// 改变是否首次输入的标记值            } else {                String textViewStr = textView.getText().toString();                // 判断显示区域的值里面是否已经有".",如果有,输入的又是".",就什么都不做                if (textViewStr.indexOf(".") != -1 && input.equals(".")) {                    return;                }                // 判断显示区域的值里面只有"-",输入的又是".",就什么都不做                if (textViewStr.equals("-") && input.equals(".")) {                    return;                }                // 判断显示区域的值如果是"0",输入的不是".",就什么也不做                if (textViewStr.equals("0") && !input.equals(".")) {                    return;                }            }            // 如果我点击了运算符以后,再输入数字的话,就要清空显示区域的值            if (clearFlag) {                textView.setText("");                clearFlag = false;// 还原初始值,不需要清空            }            textView.setText(textView.getText().toString() + input);// 设置显示区域的值        }    }    //符号按钮监听器    private class OperatorAction implements View.OnClickListener {        @Override        public void onClick(View view) {            Button btn = (Button) view;            String inputOperator = (String) btn.getText();            if (firstFlag) {// 首次输入"-"的情况                if (inputOperator.equals("-")) {                    textView.setText("-");// 显示区域的内容设置为"-"                    firstFlag = false;// 改变首次输入的标记                }            } else {                if (!clearFlag) {// 如果flag=false不需要清空显示区的值,就调用方法计算                    calculate(Double.parseDouble(textView.getText().toString()));// 保存显示区域的值,并计算                }                // 保存你点击的运算符                operator = inputOperator;                clearFlag = true;// 因为我这里已经输入过运算符,            }        }    }    // 计算用的方法    public void calculate(double x) {        if (operator.equals("+")) {            result += x;        } else if (operator.equals("-")) {            result -= x;        } else if (operator.equals("*")) {            result *= x;        } else if (operator.equals("/")) {            result /= x;        } else if (operator.equals("=")) {            result = x;        }        textView.setText("" + result);    }}

运行结果

1+1.5=2.5

清除

3-0.8=2.2

5-3=2

0/4=0

开发日志

      这是安卓第一次作业,我按照课本先把布局完成,书上的组件都没有加上id,所以我都自行补充了。然后就剩下Java文件了,我上网参考了相关资料,并且进行学习与理解。基本思路就是声明定义各组件并且为之设置监听器,获取内容并且赋予计算方法。

      第一次运行,结果因为电脑配置太低开不了虚拟化技术而用不了模拟器,上网搜了可以不开虚拟化技术的模拟器结果都不可以,这过程真的太坎坷了。

更多相关文章

  1. 强制改变默认输入法
  2. listview check
  3. 单选按钮和复选框
  4. Android(安卓)到底什么是Dialog?
  5. Android(安卓)Studio入门小例子
  6. 读取网路图片
  7. 输入处理 Input Processor
  8. Android(安卓)自定义DialogProgress
  9. android app全屏显示

随机推荐

  1. android 实现支付宝及微信内部捐赠功能
  2. android 图片放大缩小 多点缩放
  3. Android(安卓)软引用内存缓存图片
  4. Android判断后台服务是否开启的两种方法
  5. 实现Android(安卓)获取cache缓存的目录路
  6. Android(安卓)开源控件系列_2
  7. Android中自制通讯录中显示出数据库中的
  8. Android中的下拉列表-自定义选项界面样式
  9. ConstraintLayout子View设置match_parent
  10. Android(安卓)UI