Java onCreate中声明的随机整数
我目前正在学习Android,我对Java有很好的基础 我尝试在onCreate中使用以下代码来获得一个随机整数(1-20): 在我的主要活动课上:Java onCreate中声明的随机整数,java,android,random,Java,Android,Random,我目前正在学习Android,我对Java有很好的基础 我尝试在onCreate中使用以下代码来获得一个随机整数(1-20): 在我的主要活动课上: public class MainActivity extends AppCompatActivity { int randomNumber; 它不工作,我只得到0作为随机数 但是,如果我不在onCreat上声明我的随机整数,而只在Mainactivity中声明,则它可以工作: public class MainActivity exte
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方法中声明我的random。使用Math.random但使用rand.nextInt时,我能够使用其他代码实现它,但我想了解原因
未显示OnClick方法代码。代码中存在问题。您正在使用变量“randomNumber”作为全局变量。但在oncreate方法中,您正在创建另一个名为“randomNumber”的变量。这意味着你们得到的随机数实际上存储在局部变量中,而不是全局变量中。还有你的问题
It does not work, I get only 0 as random number.
之所以会发生这种情况,是因为全局int变量不是局部变量,但默认情况下实例变量是用0初始化的。
我希望我能回答这个问题。您的代码中有问题。您正在使用变量“randomNumber”作为全局变量。但在oncreate方法中,您正在创建另一个名为“randomNumber”的变量。这意味着你们得到的随机数实际上存储在局部变量中,而不是全局变量中。还有你的问题
It does not work, I get only 0 as random number.
之所以会发生这种情况,是因为全局int变量不是局部变量,但默认情况下实例变量是用0初始化的。
我希望我能回答这个问题。是的,如果我不在onCreate方法中声明integer randomNumber,它会起作用:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
randomNumber = (int)(Math.random()*20)+1;
}
谢谢你的帮助 是,如果我不在onCreate方法中声明integer randomNumber,它将起作用:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
randomNumber = (int)(Math.random()*20)+1;
}
谢谢你的帮助 “因为全局int变量默认初始化为0”,听起来不对。是的,你是对的,我编辑了我的答案。多亏了梅斯蒂尔,原语变量是如何“默认”初始化的?它是空的,不是0。如果一个基元变量是类的实例,那么基元变量会自动初始化,默认值为int,布尔值为0,假字符串为null。你也可以尝试“因为全局int变量默认初始化为0”,这听起来不对。是的,你是对的,我编辑了我的答案。多亏了梅斯蒂尔,原语变量是如何“默认”初始化的?它是空的,不是0。如果基元变量是类的实例,则基元变量将自动初始化,默认值为int,布尔值为0,假字符串为null。您也可以尝试这些。发布的第一个onCreate方法是否属于MainActivity?是,它确实属于MainActivity发布的第一个onCreate方法是否属于MainActivity属于MainActivity?是的,它确实属于MainActivity