Skip to content Skip to sidebar Skip to footer

Java Simple Number Game App Crashes When Edittext Is Empty

I have made a simple Android app, where the app creates a number between 1 and 20 and the user has to guess it. Everything works fine, except one thing: When I let the EditText emp

Solution 1:

Before you try to use text from EditText, check if it contains any text or not. If it does, read the text otherwise display a toast

Stringtext= editTextGuess.getText().toString().trim();

if(text.length == 0) {
  // show toast
} else {
  // use text from  editTextGuess
}

Solution 2:

Check your edit text string value before assigning it to the variable.

publicvoidguess(View view){
    Log.i("Button clicked", "Worked!");

    int guessValue;
    if(!editTextGuess.getText().toString().equals("")){
        guessValue = Integer.parseInt(editTextGuess.getText().toString());
        Log.i("Entered Value:", Integer.toString(guessValue));
        Log.i("The random number is:", Integer.toString(RandomNumber));


        String message;

        if(guessValue > RandomNumber){
            message = "Your guessed number is too high!";
        } elseif(guessValue < RandomNumber){
            message = "Your guessed number is too low!";
        } elseif(guessValue == RandomNumber){
            message = "You were right! Let's play again!";
            generateRandomNumber();
            Log.i("Info", "New random number created");
        } else {
            message = "Something went wrong...";
        }

        Toast.makeText(this, message, Toast.LENGTH_LONG).show();
    }  else {
        Toast.makeText(this, "Oops, your Textfield is empty", Toast.LENGTH_LONG).show();
    }

}

Solution 3:

It crashes because parseInt() throws a NumberFormatException when it tries to parse an empty string.

How to fix this depends on what you want if the input field is empty.

String value = editTextGuess.getText().toString();
if (!value.isEmpty()) {
    guessValue = Integer.parseInt(value);
    ...
}
else {
    Toast.makeText(this, "Oops, input field is empty", ...);
}

Solution 4:

As the issue has already been pointed out by @Yousaf this answer that will help you move forward but would like to add few things to take care in future to help debugging easier: Always try to create multiple statements where you are dereferencing object like

guessValue = Integer.parseInt(editTextGuess.getText().toString());

can be written as

Stringtext=editTextGuess.getText().toString();
guessValue = Integer.parseInt(text);

It will help you know the exact cause of failure.Like you may encounter NumberFormatException if the entered string is not number.

Post a Comment for "Java Simple Number Game App Crashes When Edittext Is Empty"