簡體   English   中英

為什么我在Android計算器應用程序中將ZERO作為輸出?

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

我在android studio中制作計算器應用程序,但單擊=運算符時總是得到零值。 請幫助我解決錯誤。 代碼如下:

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));
        }
    });

/ 與其他按鈕類似 /

    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;
        }
    });

/ 與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;
            }
        }
    });



}

}

您需要在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;

似乎您正在嘗試使用小數,其中/ 100給您的值小於1 ,而integer division將給您0 ,截斷其余的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM