@@ -22,15 +22,20 @@ public record ShuffledAnswers(String[] options, int correctAnswerIdx) { }
2222 public ShuffledAnswers generateShuffledAnswers () {
2323 String [] possibleAnswers = Arrays .copyOf (m_wrongAnswerOptions , m_wrongAnswerOptions .length + 1 );
2424 possibleAnswers [m_wrongAnswerOptions .length ] = m_correctAnswer ;
25- int correctAnswerIdx = secureShuffle (possibleAnswers , m_wrongAnswerOptions .length );
26- return new ShuffledAnswers (possibleAnswers , correctAnswerIdx );
25+ secureShuffle (possibleAnswers );
26+ for (int i = 0 ; i < possibleAnswers .length ; ++i ) {
27+ if (possibleAnswers [i ].equals (m_correctAnswer )) {
28+ return new ShuffledAnswers (possibleAnswers , i );
29+ }
30+ }
31+ return new ShuffledAnswers (possibleAnswers , 0 ); // should never be reached
2732 }
2833
2934 public boolean isCorrectAnswer (String a_answer ) {
3035 return a_answer .equals (m_correctAnswer );
3136 }
3237
33- private static int secureShuffle (String [] a_toShuffle , int a_correctAnswerIdx ) {
38+ private static void secureShuffle (String [] a_toShuffle ) {
3439 SecureRandom random = new SecureRandom ();
3540 for (int i = a_toShuffle .length - 1 ; i > 0 ; --i ) {
3641 int toSwapWith = random .nextInt (i + 1 );
@@ -39,10 +44,6 @@ private static int secureShuffle(String[] a_toShuffle, int a_correctAnswerIdx) {
3944 String savedFirstVal = a_toShuffle [toSwapWith ];
4045 a_toShuffle [toSwapWith ] = a_toShuffle [i ];
4146 a_toShuffle [i ] = savedFirstVal ;
42- if (a_correctAnswerIdx == toSwapWith ) {
43- a_correctAnswerIdx = i ;
44- }
4547 }
46- return a_correctAnswerIdx ;
4748 }
4849}
0 commit comments