Делаем JRadioButton случайным

мои данные поступают из запроса, подобного этому, к моим переключателям:

radio1.setText(Question.get(i).getChoiceOne()) // assign ist choice to ist radio button
radio2.setText(Question.get(i).getChoiceTwo()) // assign second choice to second radio
radio3.setText(Question.get(i).getcorrectchoice()) // assign correct choice to third radio button

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


person s.shah    schedule 18.08.2016    source источник
comment
@LukasRotter или просто Collections.shuffle() в этом списке.   -  person Selim    schedule 18.08.2016
comment
@Selim Вау ... Не могу поверить, что никогда раньше не слышал об этом методе, спасибо!   -  person Lukas Rotter    schedule 18.08.2016


Ответы (2)


Вы можете сделать следующее:

String one = Question.get(i).getChoiceOne();
String two = Question.get(i).getChoiceTwo();
String three = Question.get(i).getcorrectchoice();

// construct list from questions.
List<String> choices = Arrays.asList(one, two, three);

// give random order to list
Collections.shuffle(choices);

// set radio button texts
radio1.setText(choices.get(0));
radio2.setText(choices.get(1));
radio3.setText(choices.get(2));
person Selim    schedule 18.08.2016
comment
@Seleim большое спасибо. Но предположим, я хочу подсчитать баллы, тогда как мне определить правильный выбор? - person s.shah; 19.08.2016

person    schedule
comment
@Whynot спасибо, но я уже использовал Collections.shuffle(choices); метод и он работает. Теперь я не знаю, как указать правильный ответ и увеличить балл, потому что ответ может быть в одном из трех переключателей? radio1.setText (выбор. получить (0)); radio2.setText(выбор.получить(1)); radio3.setText(выбор.получить(2)); - person s.shah; 19.08.2016
comment
вы должны прочитать и понять код, все, о чем вы говорите, находится либо в моем коде, либо в коде Селима. для счета объявить статическую переменную, которая должна его содержать; каждый раз, когда вы получаете правильный ответ оценка увеличивается. и, наконец, если один из ответов решил вашу проблему, не забудьте подтвердить его =] - person whyn0t; 19.08.2016
comment
Я знаю, что переменная должна быть увеличена, если выбран правильный выбор, но мой вопрос заключается в том, как определить правильный вариант в этом коде? Первая строка = Question.get(i).getChoiceOne(); Вторая строка = Question.get(i).getChoiceTwo(); Строка три = Question.get(i).getCorrectChoice(); Список‹Строка› варианты = Arrays.asList(one, two, three); Collections.shuffle(выборы); c1.setText(выборы.get(0).toString()); c2.setText(выборы.get(1).toString()); c3.setText(выборы.get(2).toString()); - person s.shah; 19.08.2016