Я пытаюсь создать генератор случайных чисел в 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 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();
}
Здесь используйте это, чтобы решить вашу проблему:
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
}
}