如果没有输入,应用程序崩溃

时间:2016-02-19 19:14:45

标签: java android crash calculator

好的我正在尝试创建一个简单的计算器应用程序,但是当没有任何输入我尝试了条件但它没有工作时崩溃了。 所以如果有人能帮助我那会很好。 非常感谢!!

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));
    }
}
}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:-1)

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

我通过这个功能来解决它​​

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;
         }
}
 }