Страницы

Поиск по вопросам

пятница, 13 декабря 2019 г.

Как установить связь между элементами двух массивов, чтобы после перемешивания элементов первого массива связь не терялась

#java #android #массивы


Есть массив вопросов:

String[] questions = getResources().getStringArray(R.array.questions);


Есть массив ответов на эти вопросы:

String[]answers= getResources().getStringArray(R.array.answers);


Изначально первый вопрос в массиве вопросов соответствует первому ответу в массиве
ответов. В процессе игры пользователь должен ответить на вопрос и его ответ должен
сравниваться с ответом из массива ответов, в результате чего либо прибавляется балл,
либо нет. Ответы из массива нигде не выводятся. Отвечать на вопросы можно многократно
с целью улучшения результата.

Но, чтобы исключить момент механического запоминания ответов по очередности их появления
(если вопросы будут все время показывать в одном и том же порядке), вопросы перед стартом
перемешиваются с помощью специального метода. 

Проблема в том, как теперь указать программе, какой из ответов соответствует какому
из вопросов в перемешанном массиве вопросов? Можно ли в андроид изначально связать
элементы из одного массива с соответствующим им элементам из другого массива, чтобы
после перемешивания первого массива, программа сохраняла связь между элементом из первого
массива и элементом из второго массива?

Быть может, эту задачу может решить каким-то другим способом?
    


Ответы

Ответ 1



Вам надо создать модель данных, содержащую и вопрос и ответ. После этого список этих моделей можно мешать как угодно без потери связности. public class QAModel { String q; String a; QAModel(String q, String a) { this.q=q; this.a=a; } public String getQ(){return q;} public String getA(){return a;} } Теперь вы можете создавать вашу модель из ваших данных: String[] questions = getResources().getStringArray(R.array.questions); String[] answers = getResources().getStringArray(R.array.answers); ArrayList models=new ArrayList<>(); for(int i = 0; i< questions.lenght; i++) { models.add(new QAModel(questions[i], answers[i])); } Теперь вы можете сортировать вопросы, не теряя связь с ответами.

Ответ 2



Ну на самом деле напрашиваются сразу 2 варианта решения: 1 - создать класс Quiz с полями question и answer. Создать список, который будет содержать экземпляры данного класса с вопросом и ответом. Дальше можете перемешивать как хотите данный список. 2 - Создать TreeMap и заполнить ее данными, в качестве ключа вопрос, в качестве значения - ответ. ПЕРВЫЙ ВАРИАНТ ПРЕДПОЧТИТЕЛЬНЕЕ :)

Комментариев нет:

Отправить комментарий