计算器的逻辑

来源:互联网 发布:淘宝自己退货率怎么看 编辑:程序博客网 时间:2024/06/05 14:53

很早以前刚学编程的时候也写过计算器 代码之复杂..令人发寒 

然后今日从慕课网上看来的逻辑 就跟着学了学 感觉还不错

    @Override    public void onClick(View v) {        String str = et.getText().toString();        switch (v.getId()) {            case R.id.cdl_content:                //普通1-9 +0                if(clear_flag){                    clear_flag=false;                    //clean                    str="";                    et.setText("");                }                et.setText(str + button.getText().toString());                //运算符加减乘除                et.setText(str + " " + button.getText().toString() + " ");                //clean                clear_flag=false;                str="";                et.setText("");                //删除                if(clear_flag){                    clear_flag=false;                    str="";                    et.setText("");                }else                if (!TextUtils.isEmpty(str)) {                    et.setText(str.substring(0, str.length() - 1));                }                //等于号                getResult();                break;        }    }    //单独运算结果    public void getResult() {if(clear_flag){    clear_flag=false;    return;}        clear_flag=true;        String exp = et.getText().toString();        if (TextUtils.isEmpty(exp)) {            return;        }        if (!exp.contains(" ")) {            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 result = 0;        if (s1 != null && s2 != null) {            double d1 = Double.parseDouble(s1);            double d2 = Double.parseDouble(s2);            if (op.equals("+")) {                result = d1 + d2;            } else if (op.equals("-")) {                result = d1 - d2;            } else if (op.equals("*")) {                result = d1 * d2;            } else if (op.equals("/")) {                if (d2 == 0) {                    result = 0;                } else {                    result = d1 / d2;                }            }            if (!s1.contains(".") && !s2.contains(".")&&!op.equals("/")) {                int r = (int) result;                et.setText(r + " ");            } else {                et.setText(result + "");            }        } else if (!s1.equals("") && s2.equals("")) {            et.setText(exp);        }  else if (s1.equals("") && !s2.equals("")) {            double d1 = Double.parseDouble(s1);            double d2 = Double.parseDouble(s2);            if (op.equals("+")) {                result = 0 + d2;            } else if (op.equals("-")) {                result = 0 - d2;            } else if (op.equals("*")) {                result = 0;            } else if (op.equals("/")) {                result=0;            }            et.setText(result+"");        }else {            //都为空            et.setText("");        }    }

大家想学习的话可以点击慕课网视频教学

原创粉丝点击