Я почти закончил свой калькулятор с Android Studio, но есть кое-что, что я не могу решить:
Я пытался написать программу для операций умножения и приоритетов умножения / деления, но она работает только в Java. Я не знаю, как это исправить в моем проекте Android studio java.
Если бы вы, ребята, могли взглянуть на мой код и сказать, как это исправить, мне бы очень помогло. Вот код:
package com.example.calcapp_training;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.text.DecimalFormat;
import java.util.List;
import java.util.Scanner;
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;
double mValueOne, mValueTwo;
int mCalculation;
String mProcess;
boolean mIsNew = 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.mBtnMinus );
mBtnMultiply = (Button) findViewById(R.id.mBtnMultiply );
mBtnDivide = (Button) findViewById(R.id.mBtnDivide );
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);
class Calculate {
public void main(String[] args) {
List<String> listCalc = new ArrayList<String>();
listCalc = new ArrayList<String>();
listCalc.add(mBtn0.getText().toString());
listCalc.add(mBtn1.getText().toString());
listCalc.add(mBtn2.getText().toString());
listCalc.add(mBtn3.getText().toString());
listCalc.add(mBtn4.getText().toString());
listCalc.add(mBtn5.getText().toString());
listCalc.add(mBtn6.getText().toString());
listCalc.add(mBtn7.getText().toString());
listCalc.add(mBtn8.getText().toString());
listCalc.add(mBtn9.getText().toString());
listCalc.add(mBtnPlus.getText().toString());
listCalc.add(mBtnMinus.getText().toString());
listCalc.add(mBtnMultiply.getText().toString());
listCalc.add(mBtnDivide.getText().toString());
listCalc.add(mBtnPoint.getText().toString());
listCalc.add(mBtnEqual.getText().toString());
listCalc.add(mBtnDel.getText().toString());
List<String> list = new ArrayList<String>();
String stNum = "";
String stOpe = "";
for (;;) {
System.out.println();
System.out.println("");
Scanner sc1 = new Scanner(System.in);
stNum = sc1.nextLine();
System.out.println();
System.out.println("");
Scanner sc2 = new Scanner(System.in);
stOpe = sc2.nextLine();
if (stOpe.equals("=")) {
list.add(stNum);
break;
} else if ((stOpe.equals("+")) || (stOpe.equals("-")) || (stOpe.equals("*")) || (stOpe.equals("/"))) {
list.add(stNum);
list.add(stOpe);
}
}
}
private int calcProsess(List<String> list) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).toString().equals("*")) {
int st = 0;
st = Integer.parseInt(list.get(i - 1).toString()) * Integer.parseInt(list.get(i + 1).toString());
list.set((i - 1), String.valueOf(st));
list.remove(i + 1);
list.remove(i);
i = i - 1;
} else if (list.get(i).toString().equals("/")) {
int st = 0;
st = Integer.parseInt(list.get(i - 1).toString()) / Integer.parseInt(list.get(i + 1).toString());
list.set((i - 1), String.valueOf(st));
list.remove(i + 1);
list.remove(i);
i = i - 1;
}
}
int answer = 0;
for (int i = 0; i < list.size(); i++) {
if (list.get(i).toString().equals("+")) {
int st = 0;
st = Integer.parseInt(list.get(i - 1).toString()) + Integer.parseInt(list.get(i + 1).toString());
list.set((i - 1), String.valueOf(st));
list.remove(i + 1);
list.remove(i);
i = i - 1;
} else if (list.get(i).toString().equals("-")) {
int st = 0;
st = Integer.parseInt(list.get(i - 1).toString()) - Integer.parseInt(list.get(i + 1).toString());
list.set((i - 1), String.valueOf(st));
list.remove(i + 1);
list.remove(i);
i = i - 1;
}
}
System.out.println();
answer = Integer.parseInt(list.get(0).toString());
mBtn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mIsNew) {
welcomeMessage.setVisibility(View.INVISIBLE);
errorMessage.setVisibility(View.INVISIBLE);
mResult.setText("");
mInput.setText("");
mIsNew = false;
}
mProcess = mResult.getText().toString();
mResult.setText(mProcess + "1");
}
});
mBtn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mIsNew) {
welcomeMessage.setVisibility(View.INVISIBLE);
errorMessage.setVisibility(View.INVISIBLE);
mResult.setText("");
mInput.setText("");
mIsNew = false;
}
mProcess = mResult.getText().toString();
mResult.setText(mProcess + "2");
}
});
mBtn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mIsNew) {
welcomeMessage.setVisibility(View.INVISIBLE);
errorMessage.setVisibility(View.INVISIBLE);
mResult.setText("");
mInput.setText("");
mIsNew = false;
}
mProcess = mResult.getText().toString();
mResult.setText(mProcess + "3");
}
});
mBtn4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mIsNew) {
welcomeMessage.setVisibility(View.INVISIBLE);
errorMessage.setVisibility(View.INVISIBLE);
mResult.setText("");
mInput.setText("");
mIsNew = false;
}
mProcess = mResult.getText().toString();
mResult.setText(mProcess + "4");
}
});
mBtn5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mIsNew) {
welcomeMessage.setVisibility(View.INVISIBLE);
errorMessage.setVisibility(View.INVISIBLE);
mResult.setText("");
mInput.setText("");
mIsNew = false;
}
mProcess = mResult.getText().toString();
mResult.setText(mProcess + "5");
}
});
mBtn6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mIsNew) {
welcomeMessage.setVisibility(View.INVISIBLE);
errorMessage.setVisibility(View.INVISIBLE);
mResult.setText("");
mInput.setText("");
mIsNew = false;
}
mProcess = mResult.getText().toString();
mResult.setText(mProcess + "6");
}
});
mBtn7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mIsNew) {
welcomeMessage.setVisibility(View.INVISIBLE);
errorMessage.setVisibility(View.INVISIBLE);
mResult.setText("");
mInput.setText("");
mIsNew = false;
}
mProcess = mResult.getText().toString();
mResult.setText(mProcess + "7");
}
});
mBtn8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mIsNew) {
welcomeMessage.setVisibility(View.INVISIBLE);
errorMessage.setVisibility(View.INVISIBLE);
mResult.setText("");
mInput.setText("");
mIsNew = false;
}
mProcess = mResult.getText().toString();
mResult.setText(mProcess + "8");
}
});
mBtn9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mIsNew) {
welcomeMessage.setVisibility(View.INVISIBLE);
errorMessage.setVisibility(View.INVISIBLE);
mResult.setText("");
mInput.setText("");
mIsNew = false;
}
mProcess = mResult.getText().toString();
mResult.setText(mProcess + "9");
}
});
mBtn0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mIsNew) {
welcomeMessage.setVisibility(View.INVISIBLE);
errorMessage.setVisibility(View.INVISIBLE);
mResult.setText("");
mInput.setText("");
mIsNew = 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 (mIsNew) {
welcomeMessage.setVisibility(View.INVISIBLE);
errorMessage.setVisibility(View.INVISIBLE);
mResult.setText("");
mInput.setText("");
mIsNew = 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 + "+");
mIsNew = false;
}
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 + "-");
mIsNew = false;
}
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 + "×");
mIsNew = false;
}
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 + "÷");
mIsNew = false;
}
mCalculation = 4;
}
});
mBtnEqual.setOnClickListener(new View.OnClickListener() {
@SuppressLint("SetTextI18n")
@Override
public void onClick(View v) {
//mValueOne (+, -, x, ÷)
String stBuff1 = mResult.getText().toString();
String stBuff2;
//mValueOne (+, -, x, ÷) mValueTwo
stBuff2 = stBuff1.substring(mProcess.length());
//mValueTwo
mValueTwo = Double.parseDouble(stBuff2);
mInput.setText(stBuff1 + "=");
mIsNew = true;
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);
int resultat = (int) Math.round(mValueOne / mValueTwo);
mResult.setText("" + resultat);
}
}
}
});
return answer;
}
}
}
}