2017-03-14 16 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