为了账号安全,请及时绑定邮箱和手机立即绑定

clear_flag运用问题

public void onClick(View v) {
    String str =  editText.getText().toString();
    Button btn = (Button) v;
    switch (v.getId()){
        case R.id.button3:
        case R.id.button4:
        case R.id.button8:
        case R.id.button12:
            str = str + " " + btn.getText() + " ";
            break;
        case R.id.button1:
            str = "";
            break;
        case R.id.button2:
            str = btnDelate(str);
            break;
        case R.id.button16:
            str = btnEqual(str);
            break;
        case R.id.button18:
            if( ! str.endsWith("."))
                str += btn.getText();
            break;
        default:
            if(clear_flag) str = "";
            clear_flag = false;
            str += btn.getText();
    }
    editText.setText(str);

}

private String btnEqual(String str) {
    clear_flag = true;
    if(str==null || str.endsWith(" ") || str.equals(""))
        return str;
    if(str.contains(" ")){
            int startSpace = str.indexOf(" ");
            int endSpace = str.lastIndexOf(" ");

            if(startSpace == 0){
                str = "";
                return str;
            }
            if( endSpace-startSpace > 2 ){
                Toast.makeText(this,"不支持连缀运算",Toast.LENGTH_SHORT).show();
                str = "";
                return str;
            }
            else{
                char operator = str.charAt(startSpace + 1);
                double Fir = Double.parseDouble(str.substring(0,startSpace));
                double Sec = Double.parseDouble(str.substring(endSpace+1));
                double result;
                int intresult;
                switch (operator){
                    case '+':
                        result = Fir + Sec;
                        if(!str.contains(".")) {
                            intresult = (int) result;
                            str = intresult + "";
                        }
                        else
                            str = result + "";
                    break;

                    case '-':
                        result = Fir - Sec;
                        if(!str.contains(".")) {
                            intresult = (int) result;
                            str = intresult + "";
                        }
                        else
                            str = result + "";
                    break;

                    case '×':
                        result = Fir * Sec;
                        if(!str.contains(".")) {
                            intresult = (int) result;
                            str = intresult + "";
                        }
                        else
                            str = result + "";
                    break;

                    case '÷':
                        if(Sec != 0d){
                            result = Fir / Sec;
                            intresult = (int) result;
                            if(!str.contains(".") && result%1==0){
                                str = intresult + "";
                            }else
                                str = result + "";
                        }else
                            Toast.makeText(this,"除数不可为零!",Toast.LENGTH_SHORT).show();
                    break;
                }
            }
    }
    return str;
}

在进行玩“=”运算后能够正常的清空原字符,但是在运算后不重新输入数字而是输入运算符,再接着输入数字时,此时输入框被清空而只剩下最后输入的数字了(比如输入1+1=2然后紧接着输入+号再输入数字时2和+号都没了)

正在回答

1 回答

这个只是适合两个数字之间的运算,你要让运算后不重新输入数字而是输入运算符,再接着输入数字后,能继续运算的话,你要保留上一个运算后的结果,不然就会出现你这样的结果。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android攻城狮的第一门课(入门篇)
  • 参与学习       312472    人
  • 解答问题       4931    个

想快速掌握Android应用开发基础,选择学习这门课程就对了。

进入课程

clear_flag运用问题

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号