Я почти закончил свой калькулятор с 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) + "" );
}
}
}
});
}
}