安卓简易计算器
16lz
2021-01-26
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文件了,我上网参考了相关资料,并且进行学习与理解。基本思路就是声明定义各组件并且为之设置监听器,获取内容并且赋予计算方法。
第一次运行,结果因为电脑配置太低开不了虚拟化技术而用不了模拟器,上网搜了可以不开虚拟化技术的模拟器结果都不可以,这过程真的太坎坷了。
更多相关文章
- 强制改变默认输入法
- listview check
- 单选按钮和复选框
- Android(安卓)到底什么是Dialog?
- Android(安卓)Studio入门小例子
- 读取网路图片
- 输入处理 Input Processor
- Android(安卓)自定义DialogProgress
- android app全屏显示