Я пытался создать игру с более высоким или низким уровнем угадывания в студии androd, и когда я пытаюсь запустить ее, единственное случайное число, которое генерируется, равно нулю - PullRequest
0 голосов
/ 28 мая 2020

Вот код, используемый для генерации случайного числа

package com.example.sastr.guessnumber;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import java.util.Random;

public class MainActivity extends AppCompatActivity {
    int randomNumber;
    public void generateRandomNumber(){
        Random rand = new Random();
        int random_integer = rand.nextInt(20-1) + 1;
    }
    public void guess(View view){
        EditText editText = (EditText) findViewById(R.id.editText);
        Log.i("Random number is: ",Integer.toString(randomNumber));
        int guessnumber = Integer.parseInt(editText.getText().toString());
        String message;
        if (guessnumber > randomNumber)
        {
            message = "Number entered is greater, enter smaller number";
        }
        else if (guessnumber < randomNumber)
        {
            message = "Number entered is lower, enter bigger number";
        }
        else
        {
            message = "You guessed it right!";
            generateRandomNumber();
        }
        Toast.makeText(this,message,Toast.LENGTH_LONG).show();

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Random rand = new Random();
        int random_integer = rand.nextInt(20) + 1;
    }
}

Я выполнял программу на своем телефоне, и каждый раз генерируемое случайное число равно нулю. Может кто подскажет, в чем проблема? Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 28 мая 2020

Вы создали переменную randomNumber и никогда не присваивали ей значение. Измените свой generateRandomNumber (), как показано ниже:

public void generateRandomNumber(){
    Random rand = new Random();
    randomNumber = rand.nextInt(20-1) + 1;
}

и измените свой onCreate на:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Random rand = new Random();
    randomNumber = rand.nextInt(20) + 1;
}
2 голосов
/ 28 мая 2020

У вас есть int randomNumber в качестве поля класса и int random_integer в вашем методе onCreate. Я думаю, вы хотите установить randomNumber в своем методе onCreate и generateRandomNumber.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Random rand = new Random();
    // this is useless
    // int random_integer = rand.nextInt(20) + 1;
    // try this
    randomNumber = rand.nextInt(20-1) + 1;

    // or just called the private method generateRandomNumber you created.
    // generateRandomNumber();
    // in generateRandoNumber(); you also need to change the line to randomNumber = rand.nextInt(20-1) + 1;
}
...