首页 > 解决方案 > 我的计算器应用程序正在关闭按钮双击

问题描述

我运行了一个简单的计算器程序,但程序有很多错误.. 应用程序只是关闭,按钮有时无法正常工作

{

        btClr.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                txtInput.setText(null);
                txtOutput.setText(null);
            }
        });

所有其他数字按钮的代码

    bt0.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            txtInput.setText((txtInput.getText() + "0"));
        }
    });

对于函数,类似其他 sub, div, mul

    btPlus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            m1 = Double.parseDouble((txtInput.getText() + ""));
            fAdd = true;
            txtInput.setText(null);
        }
    });

点击时的最终相等函数

     btEql.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                m2 = Double.parseDouble(txtInput.getText() + "");
                if (fAdd){
                    txtOutput.setText((m1 + m2 + ""));
                    fAdd = false;
                }
                if (fSub){
                    txtOutput.setText((m1 - m2 + ""));
                    fSub = false;
                }
                if (fMul){
                    txtOutput.setText((m1 * m2 + ""));
                    fMul = false;
                }
                if (fDiv){
                    txtOutput.setText((m1 / m2 + ""));
                    fDiv = false;
                }
                if (fPercent){
                    txtOutput.setText((m1 % m2 + ""));
                    fPercent = false;
                }

            }
        });
    }
}

而且我的百分比功能无法正常工作。请帮助,无法解决此问题

标签: android

解决方案


你需要改进一些代码

  1. 不要在 setText 中设置空值

    txtInput.setText(null);
    

    用。。。来代替

    txtInput.setText("");
    
  2. 在访问/解析之前检查 null

    m1 = Double.parseDouble((txtInput.getText() + ""));
    

    用。。。来代替

    if(txtInput.getText() != null){
       //Do your work
    }
    
  3. 如果你想找到一个百分比,你可以使用另一种方式

    result = Math.round ((m1/ m2) * 100);
    

推荐阅读