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;        }    }}
运行效果:





更多相关文章

  1. android 数字键盘使用
  2. Android(安卓)单独抽取 WebRtc-NS/NSX(音频降噪) 模块
  3. android 计算器(2)
  4. Android(安卓)计算器
  5. 【Android自动化打包】03. APK的数字签名
  6. android反编译
  7. Android(安卓)中 EditText 的 inputType 属性及其他常用属性详解
  8. android inputType属性
  9. EditText 报出 “This text field does not specify an inputTyp

随机推荐

  1. Android中EventBus事件总线发送网络请求
  2. android 的线程模型和AsyncTask
  3. android 系统级别开发环境搭建 .
  4. Android AsyncTask实现异步任务的执行
  5. Android IOS WebRTC 音视频开发总结(八)--
  6. Android开发环境搭建之Android(安卓)adb
  7. Android Studio 常见 Build 问题 Error:f
  8. Android(安卓)菜单(OptionMenu)大全
  9. android获得控制台log,打印控制台log
  10. Android使用adb命令直接修改文件