我想生成没有重复的随机数,我得到这个代码
ArrayList<Integer> numbers = new ArrayList<Integer>();
Random randomGenerator = new Random();
int random = randomGenerator.nextInt(16)+1;
if (!numbers.contains(random))
{
numbers.add(random);
}
我想使用此代码生成随机ID,以选择要从数据库中显示哪个问题。当我回答问题时,它应该生成一个新的随机ID。但是如果我使用上面的所有代码,那么数组就会变成一个新的代码,并且它不知道之前生成了什么id。
如果我将ArrayList<Integer> numbers = new ArrayList<Integer>();
放在onCreate
上而其他代码放在public int random()
中,则numbers
in无法读取我在{{1}上创建的数组}。
我想问一下,我可以将onCreate
创建为公共数组,所以我应该在ArrayList<Integer>
方法上声明一次,整个类都可以使用这个数组。
答案 0 :(得分:1)
您可以在onCreate方法之外声明ArrayList并在该方法内初始化它 然后愉快地在你的活动中使用它。
所以,这个:
ArrayList<Integer> numbers = new ArrayList<Integer>();
在课堂声明之后(在班级第一个{
之后)在你的代码中上升
和此:
Random randomGenerator = new Random();
int random = randomGenerator.nextInt(16)+1;
if (!numbers.contains(random))
{
numbers.add(random);
}
可以放入你的onCreate方法
答案 1 :(得分:0)
将数组与处理它分开声明,例如作为全局类1。
public class ClassName {
ArrayList<Integer> name;
@Override
public void onCreate(...){
name = new ArrayList<Integer>();
}
public void yourMethod(...){
//your operations
}
}
这样你可以保留阵列。我不会创建公共数组,因为如果将其定义为全局和私有,则可以从整个类中访问它。如果您想从包中的其他类访问,只需创建常用方法:
public ArrayList<Integer> getArrayList(){
return name;
}
顺便说一下,我使用Set<Integer>
(here are docs)来解决这个问题,因为它不允许你添加重复的项目,所以你可以摆脱多余的if语句。