如果未输入任何内容,应用程序会崩溃

App crashes if nothing entered

好的,我正在尝试创建简单的计算器应用程序,但是当没有输入任何内容时它崩溃了我尝试了条件但它没有用。 因此,如果有人可以帮助我,那就太好了。 非常感谢!!

P.S。对不起英语不好

public class Kalkulator extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_kalkulator);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}

public void onButtonClick(View v) {
    EditText e1 = (EditText)findViewById(R.id.etFirstNumber);
    EditText e2 = (EditText)findViewById(R.id.etSecondNumber);
    EditText e3 = (EditText)findViewById(R.id.etThirdNumber);
    TextView t1 = (TextView)findViewById(R.id.tvresult);
    String a = e1.getText().toString();
    String b = e2.getText().toString();
    String c = e3.getText().toString();
    String er = "Ukucaj neki broj";
    double num1 = Double.parseDouble(a);
    double num2 = Double.parseDouble(b);
    double num3 = Double.parseDouble(c);

    if ( a.equals("") || b.equals("") || c.equals("")) {
        t1.setText(er);
    } else {
        double sum = (num1*4) + (num2*5) + (num3*5);
        t1.setText(String.valueOf(sum));
    }
}
}

这个问题是因为用户没有在e1e2e3中输入任何数字。 当编译器转到第 String a = e1.getText().toString(); 行时,他没有在 e1 中找到任何要转换为字符串的文本!等等..

我用这个函数解决了

private boolean isEmpty(EditText etText) {
if (etText.getText().toString().trim().length() > 0) {
    return false;
  } else {
    return true;
         }
}

并测试编辑文本是否为空

你可以在你的代码中使用它设置这个函数并使用它

你的代码

  package com.ftech.kalkulatorzamalumaturu;

  import android.content.pm.ActivityInfo;
  import android.support.v7.app.AppCompatActivity;
  import android.os.Bundle;
  import android.view.View;
  import android.widget.EditText;
  import android.widget.TextView;

 public class Kalkulator extends AppCompatActivity {
  String a ,b ,c ;

 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kalkulator);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

 }

 public void onButtonClick(View v) {
   final  EditText e1 = (EditText)findViewById(R.id.etFirstNumber);
   final  EditText e2 = (EditText)findViewById(R.id.etSecondNumber);
   final  EditText e3 = (EditText)findViewById(R.id.etThirdNumber);
   final  TextView t1 = (TextView)findViewById(R.id.tvresult);
      if (isEmpty(e1 )==false){
                          a = e1.getText().toString();
                             }

    if (isEmpty(e2 )==false){ 
                         b = e2.getText().toString();
                       }


    if (isEmpty(e3 )==false){
                        c = e3.getText().toString();
                       }


String er = "Ukucaj neki broj";
double num1 = Double.parseDouble(a);
double num2 = Double.parseDouble(b);
double num3 = Double.parseDouble(c);

if ( a.equals("") || b.equals("") || c.equals("")) {
    t1.setText(er);
} else {
    double sum = (num1*4) + (num2*5) + (num3*5);
    t1.setText(String.valueOf(sum));
}



}

private boolean isEmpty(EditText etText) {
if (etText.getText().toString().trim().length() > 0) {
    return false;
  } else {
    return true;
         }
}
 }

在这里胡乱猜测。如果 (a, b, c) 可以是一个空字符串,那么 parseDouble 可能会抛出 NumberFormatException。尝试将解析代码移动到 else 块。