簡體   English   中英

Android猜謎游戲? 如何在用戶正確使用時更改隨機數並在用戶輸入任何內容時解決崩潰問題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM