最容易理解的Android计算器实现

package com.example.Calcuator;
import com.wk.cal.CalAdd;
import com.wk.cal.CalDiv;
import com.wk.cal.CalMul;
import com.wk.cal.CalSub;
import com.wk.cal.Calculator;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MyActivity extends Activity {
    TextView mtvText;
    Button mbtnAdd, mbtnSub, mbtnMul, mbtnDiv, mbtnResult, mbtnClear, mbtn0,
            mbtn1, mbtn2, mbtn3, mbtn4, mbtn5, mbtn6, mbtn7, mbtn8, mbtn9,mbtnExit;
    String num1, num2;
    String cal_Operator = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initButton();
        AddButtonAction();
    }

    private void initButton() {
        mbtnClear = (Button) findViewById(R.id.btnClear);
        mtvText = (TextView) findViewById(R.id.tvResult);
        mbtnAdd = (Button) findViewById(R.id.btnAdd);
        mbtnSub = (Button) findViewById(R.id.btnSub);
        mbtnMul = (Button) findViewById(R.id.btnMul);
        mbtnDiv = (Button) findViewById(R.id.btnDiv);
        mbtnResult = (Button) findViewById(R.id.btnResult);
        mbtnExit    = (Button) findViewById(R.id.btnExit);
        mbtn0 = (Button) findViewById(R.id.btn0);
        mbtn1 = (Button) findViewById(R.id.btn1);
        mbtn2 = (Button) findViewById(R.id.btn2);
        mbtn3 = (Button) findViewById(R.id.btn3);
        mbtn4 = (Button) findViewById(R.id.btn4);
        mbtn5 = (Button) findViewById(R.id.btn5);
        mbtn6 = (Button) findViewById(R.id.btn6);
        mbtn7 = (Button) findViewById(R.id.btn7);
        mbtn8 = (Button) findViewById(R.id.btn8);
        mbtn9 = (Button) findViewById(R.id.btn9);

    }

    private void AddButtonAction() {
        mbtn0.setOnClickListener(new ButtonActionListener());
        mbtn1.setOnClickListener(new ButtonActionListener());
        mbtn2.setOnClickListener(new ButtonActionListener());
        mbtn3.setOnClickListener(new ButtonActionListener());
        mbtn4.setOnClickListener(new ButtonActionListener());
        mbtn5.setOnClickListener(new ButtonActionListener());
        mbtn6.setOnClickListener(new ButtonActionListener());
        mbtn7.setOnClickListener(new ButtonActionListener());
        mbtn8.setOnClickListener(new ButtonActionListener());
        mbtn9.setOnClickListener(new ButtonActionListener());
        mbtnAdd.setOnClickListener(new ButtonActionListener());
        mbtnSub.setOnClickListener(new ButtonActionListener());
        mbtnMul.setOnClickListener(new ButtonActionListener());
        mbtnDiv.setOnClickListener(new ButtonActionListener());
        mbtnResult.setOnClickListener(new ButtonActionListener());
        mbtnClear.setOnClickListener(new ButtonActionListener());
        mbtnExit.setOnClickListener(new ButtonActionListener());
    }

    class ButtonActionListener implements OnClickListener {
        public void btnClearAction(View v) {
            if (v.getId() == R.id.btnClear) {
                mtvText.setText("");

            }
        }

        public void btnAddAction(View v) {
            if (v.getId() == R.id.btnAdd) {
                num1 = (String) mtvText.getText();
                System.out.println("[num1]"+num1);
                mtvText.setText("");
                cal_Operator  = (String) mbtnAdd.getText();
            }
        }

        public void btnSubAction(View v) {
            if (v.getId() == R.id.btnSub) {
                num1 = (String) mtvText.getText();
                System.out.println("[num1]" + num1);
                mtvText.setText("");
                cal_Operator  = (String) mbtnSub.getText();
            }
        }

        public void btnMulAction(View v) {
            if (v.getId() == R.id.btnMul) {
                num1 = (String) mtvText.getText();
                System.out.println("[num1]"+num1);
                mtvText.setText("");
                cal_Operator  = (String) mbtnMul.getText();

            }
        }

        public void btnDivAction(View v) {
            if (v.getId() == R.id.btnDiv) {
                num1 = (String) mtvText.getText();
                System.out.println("[num1]"+num1);
                System.out.println(num1);
                mtvText.setText("");
                cal_Operator  = (String) mbtnDiv.getText();

            }
        }

        public void btn0Action(View v) {
            if (v.getId() == R.id.btn0) {
                mtvText.setText(mtvText.getText() + "0");
            }
        }

        public void btn1Action(View v) {
            if (v.getId() == R.id.btn1) {
                mtvText.setText(mtvText.getText() + "1");
            }
        }

        public void btn2Action(View v) {
            if (v.getId() == R.id.btn2) {
                mtvText.setText(mtvText.getText() + "2");
            }
        }

        public void btn3Action(View v) {
            if (v.getId() == R.id.btn3) {
                mtvText.setText(mtvText.getText() + "3");
            }
        }

        public void btn4Action(View v) {
            if (v.getId() == R.id.btn4) {
                mtvText.setText(mtvText.getText() + "4");
            }
        }

        public void btn5Action(View v) {
            if (v.getId() == R.id.btn5) {
                mtvText.setText(mtvText.getText() + "5");
            }
        }

        public void btn6Action(View v) {
            if (v.getId() == R.id.btn6) {
                mtvText.setText(mtvText.getText() + "6");
            }
        }

        public void btn7Action(View v) {
            if (v.getId() == R.id.btn7) {
                mtvText.setText(mtvText.getText() + "7");
            }
        }

        public void btn8Action(View v) {
            if (v.getId() == R.id.btn8) {
                mtvText.setText(mtvText.getText() + "8");
            }
        }

        public void btn9Action(View v) {
            if (v.getId() == R.id.btn9) {
                mtvText.setText(mtvText.getText() + "9");
            }
        }

        public void btnResultAction(View v) {
             try{
                 if(v.getId() ==  R.id.btnResult){
                     num2 = (String) mtvText.getText();
                     System.out.println("[num2]"+num2);
                     mtvText.setText("");
                     CalFactory factory = new CalFactory();
                     factory.createCalFactory(cal_Operator);
                 }
             }catch(Exception  e){
             }
        }

        public void btnExitAction(View v){
            if(v.getId() == R.id.btnExit){
                System.exit(0);
            }
        }

        @Override
        public void onClick(View v) {
            btnExitAction(v);
            btnClearAction(v);
            btn0Action(v);
            btn1Action(v);
            btn2Action(v);
            btn3Action(v);
            btn4Action(v);
            btn5Action(v);
            btn6Action(v);
            btn7Action(v);
            btn8Action(v);
            btn9Action(v);
            btnAddAction(v);
            btnSubAction(v);
            btnMulAction(v);
            btnDivAction(v);
            btnResultAction(v);

        }

    }

    class CalFactory {
        public void createCalFactory(String cal_Operator) {
            Calculator cal = null;
            switch (cal_Operator) {
                case "+":
                    cal = new CalAdd();
                    cal.setNum1(Double.valueOf(num1));
                    cal.setNum2(Double.valueOf(num2));
                    System.out.println("[num1]"+cal.getNum1()+"[num2]"+cal.getNum2());
                    mtvText.setText("加法"+num1+"[参数2]"+num2);
                    mtvText.setText(String.valueOf(cal.getResult()));
                    break;
                case "―":
                    cal = new CalSub();
                    cal.setNum1(Double.valueOf(num1));
                    cal.setNum2(Double.valueOf(num2));
                    mtvText.setText(String.valueOf(cal.getResult()));
                    break;
                case "×":
                    cal = new CalMul();
                    cal.setNum1(Double.valueOf(num1));
                    cal.setNum2(Double.valueOf(num2));
                    mtvText.setText(String.valueOf(cal.getResult()));
                    break;
                case "÷":
                    cal = new CalDiv();
                    cal.setNum1(Double.valueOf(num1));
                    cal.setNum2(Double.valueOf(num2));
                    mtvText.setText(String.valueOf(cal.getResult()));
                    break;
            }
        }
    }

}

  这个我只上传一个主要的Activity 界面的代码,核心的理念和我的控制台计算器理念是一模一样的..

时间: 2024-08-05 15:20:34

最容易理解的Android计算器实现的相关文章

Android计算器界面布局

Android计算器界面图: 所定义的XML布局文件,主要用到的是TableLayout: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_heigh

[ 转自 果壳 原著matrix67 ]Android计算器低级错误?都是二进制惹的祸!

Android 计算器惊现超级大 bug!在 Android 的计算器程序里输入 14.52 - 14.49,计算器竟然说它等于 0.0299999999!其实,这已经是计算机的老毛病了.计算机用二进制来表示数,将会不可避免地产生误差. 听说了 Android 的超级大 bug,我立即在自己的 HTC Hero 上试了一下,果然正如众人所说, 14.52 - 14.49 = 0.0299999999.稍作试验便可发现,一些更为简单的算式也会出现类似的问题,例如在 Android 计算器中输入 1

Android中回调函数的理解---本人Android纯新手

本人大二,刚刚接触Android,也刚刚申请的cnblog博客,说一下对Android中回调函数的理解,Android中回调函数和C++.JAVA中的默认构造函数差不多,即运行到了一定的代码时自动调用的代码,而Android中的回调函数和C++.JAVA中的默认构造函数的区别在于:C++.JAVA中的默认构造函数在创建一个对象时自动调用,而Android中的回调函数的自动调用是在比如按了HOME键之后.

Android 计算器

首先在activity_main.xml加入一个EditText 通过xml的方式来沈成一个图像在drawable中新建一个white_bg.xml文件,同时选择一个shape标签corners设置圆角 <corners android:radius="5dp"/> gradient设置颜色渐变 <gradient android:startColor="#FFFFFF" android:endColor="#00FFFF" /

Android计算器APP练习(1)--- 界面

Android Studio 2.3.2 .参考文章:http://blog.csdn.net/like_program/article/details/51813632 1. 新建工程 MyCalculator,一路下一步,均采用默认值. 2. 按照要求修改三个xml文件内容.很多地方工程名字不一样,改成自己的名字. 3. 按照步骤修改Activity_main.XML文件,遇到问题: android:singleLine="false" 过时 暂时处理方式:删掉此行. 4. 按照步

Android计算器界面

1 <?xml version="1.0" encoding="utf-8"?> 2 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 an

Android 计算器制作 2.注册View 构建函数

鄙人新手 整了 快两天 终于搞定了.. 1.首先是MainActivity 中 在Oncreate函数中 注册 2.按+ 或者 - 号 来分成两大字符串 s1 和 s2 再将s2 分为更小的s1 和 s2 直到 s2不包含+ 或者 -号 思路就是这样,没用递归,递归速度太慢,也不擅长用递归. 3.就是找各种Bug 还有装饰 基本达成目标 和自己手机上安卓的自带计算器基本一样. 项目代码如下: 链接: 链接: http://pan.baidu.com/s/1sj65nop 密码: 926r 看到还

Android -计算器的实现

Android 科学计算器 2014年12月1日15:42:10by tops 思路: 1.布局 主布局使用LinearLayout,走向为垂直使用TextView当作显示屏,显示计算结果使用TableLayout当作输入表格TableRow是每一行,其中包含四个按键善用IDE的视图来设计布局也是很节省时间的加减乘除的英语单词 2.代码 找到TextView,给按钮直接添加setOnClickListener事件在MainActivity中实现监听接口并复写onClick方法,在方法里使用swi

理解Volley -- Android 学习之路

sky-mxc总结 转载注明:http://blog.csdn.net/mxiaochao?viewmode=contents 介绍 优点 工作原理 请求类型 使用步骤 取消请求 网络图片加载的三种方式 代码实例 介绍 Android中的网络请求一般就是两种 HttpURLConnection 和HttpClient,不论是哪一种在使用的时候都是经过一系列的封装 很繁琐有没有,而Google在2013年推出的Volley网络请求框架 ,使网络请求更加的快捷,方便,只需创建队列,创建请求,将请求放