[英]Android guessing game? How to change the random number when user gets it right and solve crash fix when user enters nothing?
我正在嘗試使用JScript在Android Studio上創建一個隨機數生成器。 該應用程序可以正常工作,但是當用戶輸入任何內容時它會崩潰,並且在用戶重新啟動應用程序之前它不會更改隨機數。 我試過下面的代碼:
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);
}
}
當用戶猜對時,我應該怎么做才能更改隨機數,以及當用戶什么都不輸入時如何修復應用程序崩潰?
使隨機randomGenerator全局化。 問題是你只生成一次隨機數.onCreate只會被調用。你需要在每次調用guess時創建一個隨機數。
像這樣改變你的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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.