简体   繁体   English

为什么我在Android计算器应用程序中将ZERO作为输出?

[英]Why am I getting ZERO as the output in Android Calculator Application?

I am making a calculator app in the android studio but I am always getting the result as zero when I am clicking = operator. 我在android studio中制作计算器应用程序,但单击=运算符时总是得到零值。 Kindly help me resolve the error. 请帮助我解决错误。 The code is as follows: 代码如下:

public class MainActivity extends AppCompatActivity {

Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn0,
        btnAdd, btnSub, btnMul, btnDivide, btnEquals, btnPercentage,
        btnClear, btnErase, btnPoint;
EditText etDisplay;

int num = 0, result = 0;
int operator;
public static final int ADD = 0;
public static final int SUBTRACT = 1;
public static final int MULIPLY = 2;
public static final int DIVIDE = 3;
public static final int PERCENTAGE = 4;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    etDisplay = (EditText) findViewById(R.id.etDisplay);
    btn0 = (Button) findViewById(R.id.btn0);
    btn1 = (Button) findViewById(R.id.btn1);
    btn2 = (Button) findViewById(R.id.btn2);
    btn3 = (Button) findViewById(R.id.btn3);
    btn4 = (Button) findViewById(R.id.btn4);
    btn5 = (Button) findViewById(R.id.btn5);
    btn6 = (Button) findViewById(R.id.btn6);
    btn7 = (Button) findViewById(R.id.btn7);
    btn8 = (Button) findViewById(R.id.btn8);
    btn9 = (Button) findViewById(R.id.btn9);
    btnAdd = (Button) findViewById(R.id.btnAdd);
    btnSub = (Button) findViewById(R.id.btnSub);
    btnMul = (Button) findViewById(R.id.btnMul);
    btnDivide = (Button) findViewById(R.id.btnDivide);
    btnEquals = (Button) findViewById(R.id.btnEquals);
    btnPercentage = (Button) findViewById(R.id.btnPercentage);
    btnClear = (Button) findViewById(R.id.btnClear);

    btnClear.setOnClickListener(new View.OnClickListener() {

    /****btnClear is used to clear the contents of EditText****/

        @Override
        public void onClick(View v) {
            etDisplay.setText("");
            num = 0;
            result = 0;
        }
    });

    btn0.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            num = num * 10;
            etDisplay.setText("");
            etDisplay.setText(String.valueOf(num));
        }
    });

    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            num = (num * 10) + 1;
            etDisplay.setText("");
            etDisplay.setText(String.valueOf(num));
        }
    });
    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            num = (num * 10) + 2;
            etDisplay.setText("");
            etDisplay.setText(String.valueOf(num));
        }
    });
    btn3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            num = (num * 10) + 3;
            etDisplay.setText("");
            etDisplay.setText(String.valueOf(num));
        }
    });

/ SIMILARLY FOR OTHER BUTTONS / / 与其他按钮类似 /

    btn4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            /*...*/
        }
    });
    btn5.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            /*...*/
        }
    });
    btn6.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            /*...*/
        }
    });
    btn7.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            /*...*/
        }
    });
    btn8.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            /*...*/
        }
    });
    btn9.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            /*...*/
        }
    });

    btnAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            operator = ADD;
            result = num;
            num = 0;
        }
    });

/ SIMILARLY FOR btnSub, btnMul, btnDivide, btnPercentage / / 与btnSub,btnMul,btnDivide,btnPercentage类似

    btnSub.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            /*...*/
        }
    });
    btnMul.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            /*...*/
        }
    });

    btnDivide.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           /*...*/
        }
    });
    btnPercentage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            /*...*/
        }
    });

    btnEquals.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (operator){
                case ADD : result = result + num;
                case SUBTRACT : result = result - num;
                case MULIPLY : result = result * num;
                case DIVIDE : result = result / num;
                case PERCENTAGE : result = result / 100;
            }
            try {
                etDisplay.setText(String.valueOf(result));
            }
            catch (ArithmeticException e){
                etDisplay.setText("");
            }
            finally {
                num = 0;
                result = 0;
            }
        }
    });



}

} }

you need to add break in your switch otherwise all cases will be executed 您需要在switch添加break ,否则将执行所有情况

case ADD : result = result + num;      break;
case SUBTRACT : result = result - num; break;
case MULIPLY : result = result * num;  break;
case DIVIDE : result = result / num;   break;
case PERCENTAGE : result = result / 100;

Seems like you are trying with small numbers where / 100 is giving you value less than 1 and the integer division will give you 0 , truncate the rest of the value 似乎您正在尝试使用小数,其中/ 100给您的值小于1 ,而integer division将给您0 ,截断其余的值

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM