[英]Random integer declared in 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;
}
在我的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方法代码。
您的代码中有问题。 您正在使用变量“ randomNumber”作为全局变量。 但是在oncreate方法中,您正在创建另一个具有相同名称“ randomNumber”的变量。 这意味着您获得的随机数实际上存储在局部变量中,而不是全局变量中。 还有你的问题
It does not work, I get only 0 as random number.
发生这种情况是因为全局int变量不是局部变量,而是实例变量默认情况下将实例变量初始化为0。我希望我回答这个问题。
是的,如果我没有在onCreate方法中声明整数randomNumber,它将起作用:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
randomNumber = (int)(Math.random()*20)+1;
}
谢谢你的帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.