在 onCreate 中声明的随机整数



我目前正在学习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;
}

在我的主活动课上:

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 方法代码。

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

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

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

是的,如果我不在 onCreate 方法中声明整数随机数,它可以工作:

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

感谢您的帮助!

最新更新