我正在尝试以不同的方式在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)。当我按“ =”按钮,但它似乎正常工作时,应用程序关闭了...
我找到了答案。如果使用子字符串,则调用解决valueTwo问题: