使用array作为公共数组来保存随机数生成

时间:2014-01-05 17:30:01

标签: android arrays random

我想生成没有重复的随机数,我得到这个代码

    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>方法上声明一次,整个类都可以使用这个数组。

2 个答案:

答案 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语句。