Как определить и использовать заданное количество вопросов из массива? Android Studio - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть массив String [] из 300+ вопросов. Когда я запускаю свою «Тестовую активность», она создает тест с «полной» длиной массива (300). Тем не менее, я хотел бы использовать только 115 вопросов (случайным образом) из этого массива. Возможно ли это сделать?

Это мой код цикла, который, как я полагаю, отвечает за количество использованных вопросов .?

 //This is my FOR Loop

 public void shuffleChapterRandomTest() {
    shuffledPositionChapterRandomTest = new String[chapterRandomTestQuestions.length];
    for (int k = 0; k < shuffledPositionChapterRandomTest.length; k++) {
        shuffledPositionChapterRandomTest[k] = String.valueOf(k);
    }
    Collections.shuffle(Arrays.asList(shuffledPositionChapterRandomTest));
    Log.i("TAG", "shuffle: " + shuffledPositionChapterRandomTest[0] + " " + shuffledPositionChapterRandomTest[1]);
}

1 Ответ

0 голосов
/ 07 сентября 2018

Вы почти у цели, но я думаю, что весь ваш перетасованный массив содержит строковое значение индекса, а не вопрос. Это может быть упрощено, если chapterRandomTestQuestions - это массив строковых вопросов.

Создайте случайный список Strings из массива и верните перемешанные вопросы, которые можно перебирать при необходимости:

 public List<String> shuffleChapterRandomTest() {
    final List<String> randomQuestions = Arrays.asList(chapterRandomTestQuestions);
    Collections.shuffle(randomQuestions);
    return randomQuestions.subList(0, 115);
}

Предполагается, что в списке более 115 элементов, поэтому немного небезопасно (вы можете вернуть randomQuestions.subList(0, Math.min(chapterRandomTestQuestions.length, 115)), чтобы остановить эту проблему), в противном случае будет выброшено IndexOutOfBoundsException

...