思路:先布局,在将相应的按键实例化,创建监听器,计算。可以说是非常简单了。

贴一下代码:

布局代码:

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


简单的布局,建议不要拖动布局,用手打的布局更方便。

main_activity文件:
package com.example.fxh98.cal;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    Button bt_0,bt_1,bt_2,bt_3,bt_4,bt_5,bt_6,bt_7,bt_8,bt_9,bt_de;    Button bt_mul,bt_div,bt_add,bt_sub;    Button bt_clr,bt_del,bt_eql;    EditText et_input;    boolean clear_flag;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //实例化对象        bt_0 = findViewById(R.id.btn_0);        bt_1 = findViewById(R.id.btn_1);        bt_2 = findViewById(R.id.btn_2);        bt_3 = findViewById(R.id.btn_3);        bt_4 = findViewById(R.id.btn_4);        bt_5 = findViewById(R.id.btn_5);        bt_6 = findViewById(R.id.btn_6);        bt_7 = findViewById(R.id.btn_7);        bt_8 = findViewById(R.id.btn_8);        bt_9 = findViewById(R.id.btn_9);        bt_add = findViewById(R.id.btn_add);        bt_sub = findViewById(R.id.btn_sub);        bt_mul = findViewById(R.id.btn_mul);        bt_div = findViewById(R.id.btn_div);        bt_de = findViewById(R.id.btn_de);        bt_eql = findViewById(R.id.btn_eql);        bt_clr = findViewById(R.id.btn_C);        bt_del = findViewById(R.id.btn_Del);        et_input = findViewById(R.id.input);        //设置监听器        bt_0.setOnClickListener(this);        bt_1.setOnClickListener(this);        bt_2.setOnClickListener(this);        bt_3.setOnClickListener(this);        bt_4.setOnClickListener(this);        bt_5.setOnClickListener(this);        bt_6.setOnClickListener(this);        bt_7.setOnClickListener(this);        bt_8.setOnClickListener(this);        bt_9.setOnClickListener(this);        bt_eql.setOnClickListener(this);        bt_del.setOnClickListener(this);        bt_de.setOnClickListener(this);        bt_div.setOnClickListener(this);        bt_mul.setOnClickListener(this);        bt_add.setOnClickListener(this);        bt_sub.setOnClickListener(this);        bt_clr.setOnClickListener(this);    }    @Override    public void onClick(View view) {        String str = et_input.getText().toString();        switch (view.getId()){            case R.id.btn_0:            case R.id.btn_1:            case R.id.btn_2:            case R.id.btn_3:            case R.id.btn_4:            case R.id.btn_5:            case R.id.btn_6:            case R.id.btn_7:            case R.id.btn_8:            case R.id.btn_9:            case R.id.btn_de:                if (clear_flag){                    clear_flag = false;                    str = "";                    et_input.setText("");                }                et_input.setText(str + ((Button)view).getText());                break;            case R.id.btn_add:            case R.id.btn_mul:            case R.id.btn_div:            case R.id.btn_sub:                if (clear_flag){                    clear_flag = false;                    str = "";                    et_input.setText("");                }                if(str.contains("+")||str.contains("-")||str.contains("*")||str.contains("/")){                    et_input.setText(str.substring(0,str.length()-3) + " " + ((Button)view).getText() + " ");                }                else et_input.setText(str + " " + ((Button)view).getText() + " ");                break;            case R.id.btn_Del:                if (clear_flag){                    clear_flag = false;                    str = "";                    et_input.setText("");                }                else if (str != null && !str.equals("")){                    et_input.setText(str.substring(0,str.length()-1));                }                break;            case R.id.btn_C:                clear_flag = false;                str = "";                et_input.setText("");                break;            case R.id.btn_eql:                getResult();                break;        }    }    public void getResult() {        String exp = et_input.getText().toString();        if(exp == null||exp.equals("")) return;        if(!exp.contains(" ")){//dont hava + - * /            return ;        }        if(clear_flag){            clear_flag = false;            return;        }        String s1=exp.substring(0,exp.indexOf(" "));        String op=exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2);        String s2=exp.substring(exp.indexOf(" ")+3);        double cnt=0;        if(!s1.equals("")&&!s2.equals("")){            double d1=Double.parseDouble(s1);            double d2=Double.parseDouble(s2);            if(op.equals("+")){                cnt = d1 + d2;            }            if(op.equals("-")){                cnt = d1 - d2;            }            if(op.equals("*")){                cnt = d1 * d2;            }            if(op.equals("/")){                if(d1 != 0&&d2 != 0)                    cnt = d1 / d2;                if(d2 == 0)                    cnt = 0;            }            if(!s1.contains(".")&&!s2.contains(".")&&!op.equals("÷")) {                int res = (int) cnt;                et_input.setText(res+"");            }else {                et_input.setText(cnt+"");}        }        else if(!s1.equals("")&&s2.equals("")){            double d1=Double.parseDouble(s1);            if(op.equals("+")){                cnt=d1;            }            if(op.equals("-")){                cnt=d1;            }            if(op.equals("*")){                cnt=0;            }            if(op.equals("/")){                cnt=0;            }            if(!s1.contains(".")) {                int res = (int) cnt;                et_input.setText(res+"");            }else {                et_input.setText(cnt+"");}        }        else if(s1.equals("")&&!s2.equals("")){            double d2=Double.parseDouble(s2);            if(op.equals("+")){                cnt=d2;            }            if(op.equals("-")){                cnt=0-d2;            }            if(op.equals("*")){                cnt=0;            }            if(op.equals("/")){                cnt=0;            }            if(!s2.contains(".")) {                int res = (int) cnt;                et_input.setText(res+"");            }else {                et_input.setText(cnt+"");}        }        else {            et_input.setText("");        }    }}

bug有好几个,但是由于是练手的程序,所以不想再做修改。

更多相关文章

  1. android alertdialog布局 dialog布局
  2. 浅谈Android五大布局(二)——RelativeLayout和TableLayout
  3. 笔记6
  4. Android从网络中获得一张图片并显示在屏幕上的实例详解
  5. 用Android自带的DrawerLayout和ActionBarDrawerToggle实现侧滑效
  6. Android(安卓)Inflate方法
  7. Android(安卓)自定义RecyclerView 实现真正的Gallery效果
  8. Android(安卓)listview 实现列表多选
  9. Android_Layout_xml布局

随机推荐

  1. Android之Menu动态改变文字
  2. Android(安卓)学习网站
  3. Android(安卓)让一个Service开机自动启动
  4. Android(安卓)检测内存泄漏工具
  5. Android访问远程网页取回json数据
  6. android录音机的一些问题整理
  7. Android(安卓)DropboxManager介绍
  8. Android中listview 大小因分辨率而异
  9. The Storage Situation: Removable Stora
  10. windows 使用QUME跑Android系统