2017-03-14 14 views
0

我正在写一个函数,其中图像显示在一个混洗列表中。随机列表/运行数组项/两分法

private int measurementCount = 0; 

public int createShuffledList(){ 
    List<Integer> indexes = new ArrayList< >(); 
    for (int i = 1; i <= MEASUEREMENTREPEATS; i++) { 
     indexes.add(i); 
    } 
    Collections.shuffle(indexes); 

    Log.d("QD", "Shuffled index: " + indexes); 

    int randomPrimeNumber = (int) indexes.get(measurementCount); 

    Log.d("QD", "Value from index: " + randomPrimeNumber); 

    primeindex = randomPrimeNumber; 

    Log.d("QD", "Vale of primeindex index: " + primeindex); 

    return primeindex; 
} 

会发生什么情况?

  1. 抛去列表“索引”创建
  2. randomPrimenumber是该项目的第0位置
  3. primeindex返回数字数

的其它方法添加到+1“measurementCount” 。现在应该返回第二项混洗列表“索引”(primeindex)。

再次调用该方法重新洗牌“索引”数组(不打算)。

所以我想分成两部分的方法。 “洗牌索引”的部分应该被调用一次(onCreate),“获取下一个项目”的部分应该被多次调用(在一个循环中取决于measurementcount)。所以,我在一个错误的代码编写会发生什么:

调用一次(在OnCreate):

public int createShuffledList(){ 
    List<Integer> indexes = new ArrayList< >(); 
    for (int i = 1; i <= MEASUEREMENTREPEATS; i++) { 
     indexes.add(i); 
    } 
    Collections.shuffle(indexes); 

    Log.d("QD", "Shuffled index: " + indexes); 

    handoverIndex = indexes; 
    return handoverIndex; 
} 

呼叫多次,measurementCount +1:

public int getNextShuffledListItem(){  
    int randomPrimeNumber = (int) handoverIndex.get(measurementCount); 

    Log.d("QD", "Value from index: " + randomPrimeNumber); 

    primeindex = randomPrimeNumber; 

    Log.d("QD", "Vale of primeindex index: " + primeindex); 

    return primeindex; 
} 

是否有可能移交洗牌数组到下一个运行数组项目的方法?

最佳和在此先感谢 tigercode

回答

0

是的,你可以做到这一点,你的方法(函数)需要在列表

getNextShuffledListItem()方法调用特定的元素返回整数

public List<Integer> createShuffledList(){ 
    List<Integer> indexes = new ArrayList< >(); 
    for (int i = 1; i <= MEASUEREMENTREPEATS; i++) { 
     indexes.add(i); 
    } 
    Collections.shuffle(indexes); 
    Log.d("QD", "Shuffled index: " + indexes); 
    return indexes; 
} 

名单

indexes.get(yourIndex); 

小心IndexOutOfBoundsException,您不能调用超出列表大小的索引。

============= UPDATE 一些类如何使用你的方法

public class ExampleShuffledList { 
    private static final int MEASUEREMENTREPEATS = 10; 
    List<Integer> yourList; 
    int measurementCount; 

    public List<Integer> createShuffledList(){ 
     List<Integer> indexes = new ArrayList<>(); 
     for (int i = 1; i <= MEASUEREMENTREPEATS; i++) { 
      indexes.add(i); 
     } 
     Collections.shuffle(indexes); 
     return indexes; 
    } 

    public void someMethodWhereYouWantToUseList(){ 
     yourList = createShuffledList(); 
     measurementCount = 0; //you declere it somehow 
     Integer yourShuffledIndex = yourList.get(measurementCount); //just call get to get the index from list 
    } 
} 
+0

M ij上嗨,但我的getNextShufffledListItem()现在未找到 “索引” - 我是否必须将它们声明为整数(或类似的?)? – tigercode

+0

这有点无意义。你可以调用'indexes.get(measurementCount)',但你的索引必须是一个类变量,我更新了答案检查出来。 – miljon

+1

我不能够感谢你!绝对好! – tigercode