我正在制作一個必須支持 ,-,*,/ 的簡單 android 計算器。
當我嘗試按下任何按鈕時 - 應用程式崩潰。經過一番調查,我發現問題出在內部 if 陳述句中:
public void buttonFunctionNumber(View view) {
if (view instanceof Button){
Button button = (Button) view;
String str = button.getText().toString();
if (Double.parseDouble(result.getText().toString()) == 0)
result.setText(str);
else
result.append(str);
}
}
:if在用戶按下所需的數字之后,并且在他傳遞第二個數字之前 - 計算器的螢屏將顯示 0。所以在此if我想檢查結果是否為 0(這result是計算器螢屏顯示的內容)以了解用戶想繼續下一個號碼。
the else:用戶希望繼續向數字添加更多數字以進行計算,因此我們附加下一個數字。
我想知道如何解決這個問題。
謝謝你的時間 :)
整個代碼:
package com.example.myfirstproj;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
TextView result;
double num1=0.0, num2=0.0;
String sign = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
result = findViewById(R.id.textViewResult);
}
public void buttonFunctionNumber(View view) {
if (view instanceof Button){
Button button = (Button) view;
String str = button.getText().toString();
if (Double.parseDouble(result.getText().toString()) == 0.0)
result.setText(str);
else
result.append(str);
}
}
public void buttonEqualFunction(View view) {
if (view instanceof Button) {
String temp2 = result.getText().toString();
num2 = Double.parseDouble(temp2);
double res = 0.0;
switch (sign) {
case " ":
res = num1 num2;
break;
case "-":
res = num1 - num2;
break;
case "*":
res = num1 * num2;
break;
case "/":
if (num2 != 0.0)
res = num1 / num2;
else
Toast.makeText(this, "Error Cant divide by 0", Toast.LENGTH_LONG).show();
break;
default:
break;
}
num1 = res;
result.setText(res "");
}
}
public void buttonAddFunction(View view) {
if (view instanceof Button){
String temp1 = result.getText().toString();
num1 = Double.parseDouble(temp1);
sign = " ";
result.setText(" ");
}
}
public void buttonSubtractFunction(View view) {
if (view instanceof Button) {
String temp1 = result.getText().toString();
num1 = Double.parseDouble(temp1);
sign = "-";
result.setText("0");
}
}
public void buttonMultiplyFunction(View view) {
if (view instanceof Button) {
String temp1 = result.getText().toString();
num1 = Double.parseDouble(temp1);
sign = "*";
result.setText("0");
}
}
public void buttonDivideFunction(View view) {
if (view instanceof Button) {
String temp1 = result.getText().toString();
num1 = Double.parseDouble(temp1);
sign = "/";
result.setText("0");
}
}
public void buttonClearFunction(View view) {
result.setText("0");
}
}
uj5u.com熱心網友回復:
嘗試修剪結果并在決議之前先檢查 null 和 empty
String result = result.getText().toString()).trim();
if (result != null && result.length() > 0) {
if (Double.parseDouble(result) == 0.0)
result.setText(str);
else
result.append(str);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/530164.html
標籤:爪哇安卓安卓工作室
上一篇:如何在一項活動中制作多個抽屜布局
下一篇:如何在構建應用程式時在AndriodStudio中修復“找不到模塊的編譯目標android-30:app”錯誤?
