{\"South Carolina\", \"Columbia\"}, {\"South Dakota\", \"Pierre\"}, {\"Tennessee
ID: 3641498 • Letter: #
Question
{"South Carolina", "Columbia"},{"South Dakota", "Pierre"},
{"Tennessee", "Nashville"},
{"Texas", "Austin"},
{"Utah", "Salt Lake City"},
{"Vermont", "Montpelier"},
{"Virginia", "Richmond"},
{"Washington", "Olympia"},
{"West Virginia", "Charleston"},
{"Wisconsin", "Madison"},
{"Wyoming", "Cheyenne"}
};
int correctCount = 0;
for (int i = 0; i < stateCapital.length; i++) {
// Prompt the user with a question
String capital =
JOptionPane.showInputDialog("What is the capital of " +
stateCapital[i][0] + "?");
if (capital.equals(stateCapital[i][1])) {
JOptionPane.showMessageDialog(null, "Your answer is correct");
correctCount++;
}
else
JOptionPane.showMessageDialog(null,
"The correct answer should be " + stateCapital[i][1]);
}
JOptionPane.showMessageDialog(null,
"The correct count is " + correctCount);
}
}
**The above code is correct, but I need to make it to where the questions are randomly displayed. Please assist!
Explanation / Answer
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JOptionPane;
public class GuessStateCapital {
public static void main(String[] args) {
String[][] stateCapital = {
{"Texas", "Austin"},
{"Utah", "Salt Lake City"},
{"Vermont", "Montpelier"},
{"Virginia", "Richmond"},
{"Washington", "Olympia"},
{"West Virginia", "Charleston"},
{"Wisconsin", "Madison"},
{"Wyoming", "Cheyenne"}
};
int correctCount = 0;
int questCount = stateCapital.length;
ArrayList questIndex = new ArrayList();
Random generator = new Random();
for (int i = 0; i < questCount; i++) { //initialize questIndex list
questIndex.add(i);
}
while (questCount > 0) {
int randomIndex = generator.nextInt(questCount);
int i = Integer.parseInt(
questIndex.remove(randomIndex).toString()); //pop out the randomIndex from questIndex list. Since questCount always equals to the remaining questIndexes you don't have to worry the out of bound error.
// Prompt the user with a question
String capital =
JOptionPane.showInputDialog("What is the capital of " +
stateCapital[i][0] + "?");
if (capital.equals(stateCapital[i][1])) {
JOptionPane.showMessageDialog(null, "Your answer is correct");
correctCount++;
}
else {
JOptionPane.showMessageDialog(null,
"The correct answer should be " + stateCapital[i][1]);
}
JOptionPane.showMessageDialog(null,
"The correct count is " + correctCount);
questCount--; //decrement questCount after asking
}
JOptionPane.showMessageDialog(null,
"You get " + correctCount + " correct answer"
+ (correctCount != 1 ? "(s)" : "") + " out of "
+ stateCapital.length + " questions");
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.