0

Since I am new to Android Development, I tried making a simple project similar to a calculator. I tried to input an age from user but the app keeps crashing when I use if else statements for setting the multiplier value. How can I fix this issue ? The following is the code I have written.

package com.naveenscreations.thirdpartycompensationcalculator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;

import static java.lang.Integer.valueOf;

public class Main2Activity extends AppCompatActivity {
private EditText multiplier;
private EditText age;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    age=(EditText)findViewById(R.id.Age);
    multiplier=(EditText)findViewById(R.id.Multiplier);

    Integer year=Integer.valueOf(age.getText().toString());
    Integer mul =Integer.valueOf((multiplier.getText().toString()));
    if(year<=15)
    {
        mul=0;
        multiplier.setText(String.valueOf(mul));
    }
    else if (year>15 && year<=25)
    {
        mul=18;
        multiplier.setText(String.valueOf(mul));
    }
    else if(year>25 && year<=30)
    {
        mul=17;
        multiplier.setText(String.valueOf(mul));
    }
    else if(year>30 && year<=35)
    {
        mul=16;
        multiplier.setText(String.valueOf(mul));
    }
    else if(year>35 && year<=40)
    {
        mul=15;
        multiplier.setText(String.valueOf(mul));
    }
    else if(year>40 && year<=45)
    {
        mul=14;
        multiplier.setText(String.valueOf(mul));
    }
    else if(year>45 && year<=50)
    {
        mul=13;
        multiplier.setText(String.valueOf(mul));
    }
    else if(year>50 && year<=55)
    {
        mul=11;
        multiplier.setText(String.valueOf(mul));
    }
    else if(year>55 && year<=60)
    {
        mul=9;
        multiplier.setText(String.valueOf(mul));
    }
    else if(year>60 && year<=65)
    {
        mul=7;
        multiplier.setText(String.valueOf(mul));
    }
    else if(year>65 && year<=70)
    {
        mul=5;
        multiplier.setText(String.valueOf(mul));
    }
 }
}

Is there any other way I can optimize the code in a better way ?

Viraj Patel
  • 2,113
  • 16
  • 23

1 Answers1

0

This is crashing because your texts (age.getText() and multiplier.getText()) are empty. Try something like this :

private Integer getIntegerFromString(String value){
        if(value == null || value.isEmpty()){
            return 0;
        }

        return Integer.valueOf(value);
}


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    age=(EditText)findViewById(R.id.Age);
    multiplier=(EditText)findViewById(R.id.Multiplier);

    Integer year=getIntegerFromString(age.getText().toString());
    Integer mul =getIntegerFromString(multiplier.getText().toString());

    // The rest of your code
}
Thomas Mary
  • 1,535
  • 1
  • 13
  • 24