Android угадайку? Как изменить случайное число, когда пользователь понимает его правильно, и решить проблему с сбоем, когда пользователь ничего не вводит?

1

Я пытаюсь создать генератор случайных чисел в Android Studio с помощью JScript. Приложение работает, но оно сбой, когда пользователь ничего не вводит, а также не изменяет случайное число, пока пользователь не перезапустит приложение. Я пробовал код ниже:

    public class MainActivity extends AppCompatActivity {
        int randomNumber;
        public void checkGuess(View view){
            EditText guessedNumber = (EditText) findViewById(R.id.guessedNumber);
            String guessedNumberString = guessedNumber.getText().toString();
            int guessedNumberInt = Integer.parseInt(guessedNumberString);
            String message = "";

            if (guessedNumberInt>randomNumber){
                message = "Too large!";
            }else if(guessedNumberInt<randomNumber){
                message = "Too small!";
            }else {
                message = "correct!";
            }

            Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
}


@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Random randomGenerator = new Random();
        int randomNumber = randomGenerator.nextInt(21);
    }
}

Что я должен сделать, чтобы изменить случайное число, когда пользователь догадывается об этом правильно и как исправить сбой приложения, когда пользователь ничего не вводит?

Теги:
random

2 ответа

0
Лучший ответ

Сделать Random randomGenerator глобальным. Проблема в том, что вы генерируете только случайное число один раз.onCreate будет называться только одно. Вам нужно создать случайное число каждый раз, когда вызывается угадать.

Измените свой onCreate как это

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        randomGenerator = new Random();

    }
}

И измените свой метод checkGuess следующим образом

        public void checkGuess(View view){
            int randomNumber = randomGenerator.nextInt(21);
            EditText guessedNumber = (EditText) findViewById(R.id.guessedNumber);
            String guessedNumberString = guessedNumber.getText().toString();
           if(TextUtils.isEmpty(guessedNumberString)){
            Toast.makeText(getApplicationContext(), "Please enter a number", Toast.LENGTH_LONG).show();
            return;
           }
            int guessedNumberInt = Integer.parseInt(guessedNumberString);
            String message = "";



            if (guessedNumberInt>randomNumber){
                message = "Too large!";
            }else if(guessedNumberInt<randomNumber){
                message = "Too small!";
            }else {
                message = "correct!";
            }

            Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
}
0

Здесь используйте это, чтобы решить вашу проблему:

public void checkGuess(View view){
            EditText guessedNumber = (EditText) findViewById(R.id.guessedNumber);

            String guessedNumberString = guessedNumber.getText().toString();
        String message = "";
            int guessedNumberInt =0;
            if (guessedNumberString.length() > 0){
                Random randomGenerator = new Random();
                int randomNumber = randomGenerator.nextInt(21);
                guessedNumberInt = Integer.parseInt(guessedNumberString);
                if (guessedNumberInt>randomNumber){
                    message = "Too large!";
                }else if(guessedNumberInt<randomNumber){
                    message = "Too small!";
                }else {
                    message = "correct!";
                }

                Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
            }
            }else{
                //show message to enter a value
            }
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню