2017-03-14 3 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. randomPrimenumber를 생성 셔플에서 "인덱스"수를 반환 primeindex
  2. 위치 0에있는 아이템의 개수가

타 방법은 +1로 "measurementCount"를 추가하는 것이다 . 이제 shuffled list "indexes"의 두 번째 항목이 반환되어야합니다 (primeindex).

메서드를 다시 호출하면 "인덱스"배열이 다시 섞입니다 (의도하지 않은 경우).

그래서이 방법을 두 부분으로 나누고 싶습니다. "셔플 인덱스"의 일부는 한 번 (onCreate) 호출해야하고 "다음 항목 가져 오기"부분은 여러 번 호출해야합니다 (측정 개수에 따라 반복). 그래서이 발생해야하는 잘못된 코드를 쓰고 있어요 :

전화 번 (한 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; 
} 

는 핸드 오버에 그것을 가능 배열의 항목을 통해 실행되는 다음 메서드로 뒤섞인 배열?

사전

답변

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; 
} 

정수

의 목록을 반환해야 tigercode 최고의 감사
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

안녕 Mij,하지만 내 getNextShufffledListItem() 이제 "인덱스"를 찾을 수없는 사용 방법 - 내가 그들을 정수 (또는 비슷한?)처럼 선언해야합니까? – tigercode

+0

그것은 약간 무의미합니다. 'indexes.get (measurementCount)'를 호출 할 수는 있지만 색인은 클래스 변수 여야합니다. 응답을 업데이트했습니다. – miljon

+1

나는 너에게 충분히 감사 할 수 없다! 절대적으로 위대하다! – tigercode