使用Java解决Android Studio计算器的相等按钮问题

问题描述 投票:0回答:1

我正在尝试以不同的方式在Java中构建计算器,并且我在使用equal函数(在这种情况下为btnEqual)。

当我按下“ =”按钮时,应用程序关闭,但似乎可以使用数字和运算符。

如果您可以检查我的代码并找到错误,将对我有很大帮助。看看吧,希望您能够轻松阅读它:

package com.example.calcapp_training;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    Button btnMinus, btnDiv, btnMult, btnPlus, btnDel, btnEqual, btnPoint, btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9;
    TextView input, result;
    TextView error;
    ImageView image;
    double valueOne, valueTwo;
    int Calculation;
    String process;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final TextView errorMessage = findViewById(R.id.error);
    final TextView welcomeMessage = findViewById(R.id.welcome);

    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);
    btnPlus = (Button) findViewById(R.id.btnPlus );
    btnMinus = (Button) findViewById(R.id.btnMinus );
    btnMult = (Button) findViewById(R.id.btnMult );
    btnDiv = (Button) findViewById(R.id.btnDiv );
    btnDel = (Button) findViewById(R.id.btnDel);
    btnEqual = (Button) findViewById(R.id.btnEqual);
    btnPoint = (Button) findViewById(R.id.btnPoint);

    input = (TextView) findViewById(R.id.input);
    result = (TextView) findViewById(R.id.result);
    error = (TextView) findViewById(R.id.error);
    image = (ImageView) findViewById(R.id.image);

    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            welcomeMessage.setVisibility(View.INVISIBLE);
            process = result.getText().toString();
            result.setText(process + "1");

        }
    });

    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            welcomeMessage.setVisibility(View.INVISIBLE);
            process = result.getText().toString();
            result.setText(process + "2");
        }
    });

    btn3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            welcomeMessage.setVisibility(View.INVISIBLE);
            process = result.getText().toString();
            result.setText(process + "3");
        }
    });

    btn4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            welcomeMessage.setVisibility(View.INVISIBLE);
            process = result.getText().toString();
            result.setText(process + "4");
        }
    });

    btn5.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            welcomeMessage.setVisibility(View.INVISIBLE);
            process = result.getText().toString();
            result.setText(process + "5");
        }
    });

    btn6.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            welcomeMessage.setVisibility(View.INVISIBLE);
            process = result.getText().toString();
            result.setText(process + "6");
        }
    });

    btn7.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            welcomeMessage.setVisibility(View.INVISIBLE);
            process = result.getText().toString();
            result.setText(process + "7");
        }
    });

    btn8.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            welcomeMessage.setVisibility(View.INVISIBLE);
            process = result.getText().toString();
            result.setText(process + "8");
        }
    });

    btn9.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            welcomeMessage.setVisibility(View.INVISIBLE);
            process = result.getText().toString();
            result.setText(process + "9");
        }
    });

    btn0.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            welcomeMessage.setVisibility(View.INVISIBLE);
            process = result.getText().toString();
            result.setText(process + "0");
        }
    });

    btnDel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            welcomeMessage.setVisibility(View.INVISIBLE);
            errorMessage.setVisibility(View.INVISIBLE);

            result.setText("");
            input.setText("");

        }
    });

    btnPoint.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            welcomeMessage.setVisibility(View.INVISIBLE);
            process = result.getText().toString();
            result.setText(process + ".");
        }
    });

    btnPlus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if( result.getText().toString().equals("") != true ) {

                valueOne=Double.parseDouble(result.getText()+"");
                process = result.getText().toString();
                result.setText(process + "+");

            }

            Calculation = 1;

        }
    });

    btnMinus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if( result.getText().toString().equals("") != true ) {

                valueOne=Double.parseDouble(result.getText()+"");
                process = result.getText().toString();
                result.setText(process + "-");

            }

            Calculation = 2;

        }
    });

    btnMult.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if( result.getText().toString().equals("") != true ) {

                valueOne=Double.parseDouble(result.getText()+"");
                process = result.getText().toString();
                result.setText(process + "×");

            }

            Calculation = 3;

        }
    });

    btnDiv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if( result.getText().toString().equals("") != true ) {

                valueOne=Double.parseDouble(result.getText()+"");
                process = result.getText().toString();
                result.setText(process + "÷");

            }

            Calculation = 4;

        }
    });

    btnEqual.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            valueTwo = Double.parseDouble((String) result.getText().toString());
            process = result.getText().toString();
            result.setText(process + "=");

            if (Calculation == 1) {

                process = result.getText().toString();
                result.setText(valueOne + valueTwo + "");
                Calculation = 1;

            }

            else if (Calculation == 2) {

                result.setText(valueOne - valueTwo + "");
                Calculation = 2;

            }

            else if (Calculation == 3) {

                result.setText(valueOne * valueTwo + "");
                Calculation = 3;

            }

            else if (Calculation == 4) {

                double a = Math.round(valueOne / valueTwo);
                result.setText(a + "" );

                if(valueTwo == 0) {

                    errorMessage.setVisibility(View.VISIBLE);
                    result.setText(valueOne / valueTwo + "");

                } else {

                    errorMessage.setVisibility(View.INVISIBLE);

                }

                Calculation = 4;

            }
        }

    });
}

}

我正在尝试以不同的方式在Java中构建计算器,并且我在使用equal函数(在这种情况下为btnEqual)。当我按“ =”按钮,但它似乎正常工作时,应用程序关闭了...

java android function button calculator
1个回答
0
投票

我找到了答案。如果使用子字符串,则调用解决valueTwo问题:

© www.soinside.com 2019 - 2024. All rights reserved.