Несколько операций для калькулятора Android в Java - PullRequest
0 голосов
/ 27 апреля 2020

Я почти закончил свой калькулятор с Android Studio, но есть кое-что, что я не могу разрешить:

Как выполнить несколько операций, таких как 1 + 2x3, 1-2 / 3 и c .. И будьте уверены, что вы соблюдаете правило порядка действий. (деление и умножение выполняется перед сложением и вычитанием и т. д. c ...)

Я не знаю, с чего начать. Возможно, мне придется использовать некоторые специфические c функции или методы, которые я не изучал до сих пор ....

Если вы, ребята, могли бы взглянуть на мой код, я был бы благодарен:

    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;
    import java.text.DecimalFormat;

    public class MainActivity extends AppCompatActivity {
        Button mBtnPlus, mBtnMinus, mBtnMultiply, mBtnDivide, mBtnDel, mBtnEqual, mBtnPoint, mBtn0, mBtn1, mBtn2, mBtn3, mBtn4, mBtn5, mBtn6, mBtn7, mBtn8, mBtn9;
        TextView mInput, mResult;
        TextView mError;
        ImageView mImage;
        double mValueOne, mValueTwo;
        int mCalculation;
        String mProcess;
        long mRound_Value;
        boolean isNew = true;

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

        mBtn0 = (Button) findViewById(R.id.btn0);
        mBtn1 = (Button) findViewById(R.id.btn1);
        mBtn2 = (Button) findViewById(R.id.btn2);
        mBtn3 = (Button) findViewById(R.id.btn3);
        mBtn4 = (Button) findViewById(R.id.btn4);
        mBtn5 = (Button) findViewById(R.id.btn5);
        mBtn6 = (Button) findViewById(R.id.btn6);
        mBtn7 = (Button) findViewById(R.id.btn7);
        mBtn8 = (Button) findViewById(R.id.btn8);
        mBtn9 = (Button) findViewById(R.id.btn9);
        mBtnPlus = (Button) findViewById(R.id.btnPlus);
        mBtnMinus = (Button) findViewById(R.id.btnMinus);
        mBtnMultiply = (Button) findViewById(R.id.btnMultiply);
        mBtnDivide = (Button) findViewById(R.id.btnDivide);
        mBtnDel = (Button) findViewById(R.id.btnDel);
        mBtnEqual = (Button) findViewById(R.id.btnEqual);
        mBtnPoint = (Button) findViewById(R.id.btnPoint);
        mInput = (TextView) findViewById(R.id.input);
        mResult = (TextView) findViewById(R.id.result);
        mError = (TextView) findViewById(R.id.error);
        mImage = (ImageView) findViewById(R.id.image);

        mBtn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isNew) {

                    welcomeMessage.setVisibility(View.INVISIBLE);
                    mResult.setText("");
                    mInput.setText("");
                    isNew = false;
                }

                mProcess = mResult.getText().toString();
                mResult.setText(mProcess + "1");
            }
        });

        mBtn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isNew) {

                    welcomeMessage.setVisibility(View.INVISIBLE);
                    mResult.setText("");
                    mInput.setText("");
                    isNew = false;
                }

                mProcess = mResult.getText().toString();
                mResult.setText(mProcess + "2");
            }
        });

        mBtn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isNew) {

                    welcomeMessage.setVisibility(View.INVISIBLE);
                    mResult.setText("");
                    mInput.setText("");
                    isNew = false;
                }

                mProcess = mResult.getText().toString();
                mResult.setText(mProcess + "3");
            }
        });

        mBtn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isNew) {

                    welcomeMessage.setVisibility(View.INVISIBLE);
                    mResult.setText("");
                    mInput.setText("");
                    isNew = false;
                }

                mProcess = mResult.getText().toString();
                mResult.setText(mProcess + "4");
            }
        });

        mBtn5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isNew) {

                    welcomeMessage.setVisibility(View.INVISIBLE);
                    mResult.setText("");
                    mInput.setText("");
                    isNew = false;
                }

                mProcess = mResult.getText().toString();
                mResult.setText(mProcess + "5");
            }
        });

        mBtn6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isNew) {

                    welcomeMessage.setVisibility(View.INVISIBLE);
                    mResult.setText("");
                    mInput.setText("");
                    isNew = false;
                }

                mProcess = mResult.getText().toString();
                mResult.setText(mProcess + "6");
            }
        });

        mBtn7.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isNew) {

                    welcomeMessage.setVisibility(View.INVISIBLE);
                    mResult.setText("");
                    mInput.setText("");
                    isNew = false;
                }

                mProcess = mResult.getText().toString();
                mResult.setText(mProcess + "7");
            }
        });

        mBtn8.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isNew) {

                    welcomeMessage.setVisibility(View.INVISIBLE);
                    mResult.setText("");
                    mInput.setText("");
                    isNew = false;
                }

                mProcess = mResult.getText().toString();
                mResult.setText(mProcess + "8");
            }
        });

        mBtn9.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isNew) {

                    welcomeMessage.setVisibility(View.INVISIBLE);
                    mResult.setText("");
                    mInput.setText("");
                    isNew = false;
                }

                mProcess = mResult.getText().toString();
                mResult.setText(mProcess + "9");
            }
        });

        mBtn0.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isNew) {

                    welcomeMessage.setVisibility(View.INVISIBLE);
                    mResult.setText("");
                    mInput.setText("");
                    isNew = false;
                }

                mProcess = mResult.getText().toString();
                mResult.setText(mProcess + "0");
            }
        });

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

                welcomeMessage.setVisibility(View.INVISIBLE);
                errorMessage.setVisibility(View.INVISIBLE);
                mResult.setText("");
                mInput.setText("");
            }
        });

        mBtnPoint.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isNew) {

                    welcomeMessage.setVisibility(View.INVISIBLE);
                    mResult.setText("");
                    mInput.setText("");
                    isNew = false;
                }

                mProcess = mResult.getText().toString();
                mResult.setText(mProcess + ".");
            }
        });

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

                if (!mResult.getText().toString().equals("")) {

                    mValueOne=Double.parseDouble(mResult.getText()+"");
                    mProcess = mResult.getText().toString();
                    mResult.setText(mProcess + "+");
                }

                mCalculation = 1;
            }
        });

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

                if (!mResult.getText().toString().equals("")) {

                    mValueOne=Double.parseDouble(mResult.getText()+"");
                    mProcess = mResult.getText().toString();
                    mResult.setText(mProcess + "-");
                }

                mCalculation = 2;
            }
        });

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

                if (!mResult.getText().toString().equals("")) {

                    mValueOne=Double.parseDouble(mResult.getText()+"");
                    mProcess = mResult.getText().toString();
                    mResult.setText(mProcess + "×");
                }

                mCalculation = 3;
            }
        });

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

                if (!mResult.getText().toString().equals("")) {

                    mValueOne=Double.parseDouble(mResult.getText()+"");
                    mProcess = mResult.getText().toString();
                    mResult.setText(mProcess + "÷");
                }

                mCalculation = 4;
            }
        });

        mBtnEqual.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //mValueOne (+, -, x, ÷) mValueTwo
                String stBuff1 = mResult.getText().toString();
                //mValueTwo
                String stBuff2;
                //mValueOne (+, -, x, ÷) mValueTwo
                stBuff2 = stBuff1.substring( mProcess.length() );
                //mValueTwo
                mValueTwo = Double.parseDouble( stBuff2 );
                mInput.setText( stBuff1 + "=");

                isNew = true;
                mResult.setText("");


                DecimalFormat df = new DecimalFormat("#.##");

                if (mCalculation == 1) {

                    mResult.setText(df.format(mValueOne + mValueTwo) + "");
                }
                else if (mCalculation == 2) {

                    mResult.setText(df.format(mValueOne - mValueTwo) + "");
                }
                else if (mCalculation == 3) {

                    mResult.setText(df.format(mValueOne * mValueTwo) + "");
                }
                else if (mCalculation == 4) {
                    if (mValueTwo == 0) {

                        mResult.setText(null);
                        errorMessage.setVisibility(View.VISIBLE);
                    } else {
                        errorMessage.setVisibility(View.INVISIBLE);
            mResult.setText(df.format(mValueOne / mValueTwo) + "" );
                    }
                }
            }
        });
    }
}
...