Android平台上的计算器APP(付源码)
16lz
2021-12-04
Android实验:
请实现一个Android平台上的计算器APP,计算器的功能参照Windows的计算器标准版。
实验工具:Eclipse环境
其中两个实现文件:
1. activity_main.xml
2. MainActivity.java
注意:这里实现的是两个数的操作
源文件如下:
(1)activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
(2) MainActivity.java
package com.example.calculation;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 TextView textView; private String str; private String num1; private String num2; private double result; private boolean addNum; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView); addNum = true; } // 注册点击事件——单击一下就调用一下getResult函数 public void onClick(View v){ // v获取的是控件的id号 str = (String) textView.getText(); switch (v.getId()) { case R.id.btn_cle: textView.setText(""); //清空 break; case R.id.btn_del: if(!str.equals("") && str != null){ textView.setText(str.substring(0, str.length()-1)); // 裁剪字符 } break; case R.id.btn_equ: if(str.contains("+")){ getResult(num1, num2, "+"); } else if(str.contains("-")){ getResult(num1, num2, "-"); } else if(str.contains("×")){ getResult(num1, num2, "×"); } else if(str.contains("÷")){ getResult(num1, num2, "÷"); } else { return; } break; case R.id.btn_add: case R.id.btn_sub: case R.id.btn_mul: case R.id.btn_div: if (str.contains("+")||str.contains("-")||str.contains("×")||str.contains("÷")) return; // 防止出现多个符号 else // 只出现一个符号 textView.setText(str+((Button)v).getText()); //在原来的基础上添加符号 if(!addNum) // 不能添加数字的话,改为可以添加数字 addNum = true; break; default: // 点击的是数字或者是小数点 /* 1.未运算出结果,处于运算过程中 2. 运算出结果,然后输出的数字直接替换原来的result,开始新的运行) */ if (addNum) { textView.setText(str+((Button)v).getText()); //在原来的基础上添加数字 }else{ textView.setText(((Button)v).getText()); addNum = true; } break; } } private void getResult(String num1, String num2,String op) { //op是符号 num1 = str.substring(0,str.indexOf(op)); num2 = str.substring(str.indexOf(op)+1); try { // 转换类型 double n1 = Double.parseDouble(num1); double n2 = Double.parseDouble(num2); if (op.equals("+")) { result = n1+n2; }else if(op.equals("-")){ result = n1-n2; }else if(op.equals("×")){ result = n1*n2; }else if(op.equals("÷")){ result = n1/n2; }else { return; } String r = result+""; // 数据类型转换 //由于result是double类型,因此我们要做出一些处理,如:5+7=12.0 截取为 12 if(r.contains(".")&&r.substring(r.length()-1).equals("0")){ r = r.substring(0,r.indexOf(".")); } textView.setText(r); addNum = false; //运算结束后再点击数,就进行click函数的 default —— else 操作 } catch (Exception e) { return; } }}
运行效果: 更多相关文章
- android 数字键盘使用
- Android(安卓)单独抽取 WebRtc-NS/NSX(音频降噪) 模块
- android 计算器(2)
- Android(安卓)计算器
- 【Android自动化打包】03. APK的数字签名
- android反编译
- Android(安卓)中 EditText 的 inputType 属性及其他常用属性详解
- android inputType属性
- EditText 报出 “This text field does not specify an inputTyp