我试图在androd studio中创建一个较高或较低的猜谜游戏,当我尝试运行它时,唯一的随机数正在生成的是零。

问题描述 投票:0回答:1

以下是用于生成随机数的代码。

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;
    }
}

我一直在手机里执行程序,每次生成的随机都只有零。谁能告诉我问题出现在哪里?先谢谢你了。

java android android-studio-3.0
1个回答
2
投票

你创建了变量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
投票

你已经 int randomNumber 作为类字段,你有一个 int random_integer 的方法中。我想你应该在你的 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.