onCreate中声明的随机整数

时间:2017-08-19 22:13:30

标签: java android random

我目前正在学习Android,我在Java方面有很好的基础。

我尝试在onCreate中使用以下代码来获取随机整数(1-20):

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    int randomNumber = (int)(Math.random()*20)+1;

}

在我的MainActivity课程上:

public class MainActivity extends AppCompatActivity {
    int randomNumber;

它不起作用,我只得到0为随机数。

但是,如果我不在onCreat上声明我的随机整数,只在Mainactivity中声明它,它可以工作:

public class MainActivity extends AppCompatActivity {
    int randomNumber=(int)(Math.random()*20)+1;

最后,如果我使用另一种方式获取onCreate上声明的随机数,它的工作方式如下所示:

public class MainActivity extends AppCompatActivity {
    int randomNumber;

....

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

我不明白为什么我不能在onCreate方法中声明我的随机数。使用Math.random但是使用rand.nextInt无论如何,我能够使用其他代码,但我想了解原因。

未显示OnClick方法代码。

2 个答案:

答案 0 :(得分:0)

您的代码中存在问题。您正在使用变量' randomNumber'作为全球变量。但是在oncreate方法中,您正在创建另一个具有相同名称' randomNumber'的变量。这意味着您获得的随机数实际上存储在局部变量中而不是全局变量中。而对于你的问题

It does not work, I get only 0 as random number.

这是因为全局int变量不是局部变量,而默认情况下实例变量实例变量初始化为0。 我希望我回答这个问题。

答案 1 :(得分:0)

如果我没有在onCreate方法中声明整数randomNumber,那么它是否有效:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    randomNumber = (int)(Math.random()*20)+1;
}

感谢您的帮助!