/*Java语言实现 添加一个题目类,用于储存5个选择题目,每个题目有四个选项,包含正确答案,用数组储存,题目类型为1+1=? 添加gui类,界面用于显示题目和选项,以及提交按钮,当按下提交按钮后调用判断类判断所选答案是否正确,并显示出来,然后下一道题 添加一个判断类,用于判断选择的答案是否正确,主函数调用*/
时间: 2023-11-17 16:06:36 浏览: 84
QuizGameImageURL:android studio中的问答游戏,使用基于图片的网址生成应用中的图片和四个选项
好的,我会尽力回答您的问题。首先,我们可以先创建一个题目类,如下:
```java
public class Question {
private String question; // 题目
private String[] options; // 选项
private int answer; // 正确答案
public Question(String question, String[] options, int answer) {
this.question = question;
this.options = options;
this.answer = answer;
}
public String getQuestion() {
return question;
}
public String[] getOptions() {
return options;
}
public int getAnswer() {
return answer;
}
}
```
我们将题目、选项和正确答案封装成一个 Question 类,方便进行操作。接下来,我们可以在 GUI 类中添加一个题目数组,如下:
```java
public class GUI {
private Question[] questions = new Question[5]; // 五道题目
public GUI() {
// 初始化题目数组
String[] options1 = {"1", "2", "3", "4"};
questions[0] = new Question("1 + 1 = ?", options1, 2);
String[] options2 = {"A", "B", "C", "D"};
questions[1] = new Question("Which one is a programming language?", options2, 1);
// ...
}
// ...
}
```
我们在构造函数中初始化了五道题目。接下来,我们需要在 GUI 中显示题目和选项,如下:
```java
public class GUI {
private Question[] questions = new Question[5]; // 五道题目
private JLabel questionLabel; // 显示题目的标签
private JRadioButton[] optionButtons; // 显示选项的单选按钮
public GUI() {
// 初始化题目数组
String[] options1 = {"1", "2", "3", "4"};
questions[0] = new Question("1 + 1 = ?", options1, 2);
String[] options2 = {"A", "B", "C", "D"};
questions[1] = new Question("Which one is a programming language?", options2, 1);
// ...
// 初始化界面
JFrame frame = new JFrame("Quiz");
JPanel panel = new JPanel(new GridLayout(0, 1));
// 显示题目的标签
questionLabel = new JLabel();
panel.add(questionLabel);
// 显示选项的单选按钮
ButtonGroup optionGroup = new ButtonGroup();
optionButtons = new JRadioButton[4];
for (int i = 0; i < 4; i++) {
optionButtons[i] = new JRadioButton();
optionGroup.add(optionButtons[i]);
panel.add(optionButtons[i]);
}
// 提交按钮
JButton submitButton = new JButton("Submit");
submitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int selectedOption = -1;
for (int i = 0; i < 4; i++) {
if (optionButtons[i].isSelected()) {
selectedOption = i;
break;
}
}
if (selectedOption == -1) {
JOptionPane.showMessageDialog(frame, "Please select an option!");
return;
}
int currentQuestion = getCurrentQuestion();
if (questions[currentQuestion].getAnswer() == selectedOption) {
JOptionPane.showMessageDialog(frame, "Correct!");
} else {
JOptionPane.showMessageDialog(frame, "Incorrect!");
}
nextQuestion();
}
});
panel.add(submitButton);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
// 获取当前题目的序号
private int getCurrentQuestion() {
// ...
}
// 显示下一道题目
private void nextQuestion() {
// ...
}
// ...
}
```
我们在构造函数中初始化了界面,并添加了题目、选项和提交按钮。当提交按钮被点击时,我们需要获取当前选中的选项,判断是否选择了选项,然后判断所选答案是否正确,并显示出来,最后显示下一道题目。我们还需要实现 getCurrentQuestion() 和 nextQuestion() 方法,用于获取当前题目的序号和显示下一道题目。在 getCurrentQuestion() 方法中,我们可以通过遍历选项按钮来获取当前题目的序号,如下:
```java
private int getCurrentQuestion() {
for (int i = 0; i < 5; i++) {
if (questions[i].getQuestion().equals(questionLabel.getText())) {
return i;
}
}
return -1;
}
```
在 nextQuestion() 方法中,我们可以通过当前题目的序号来显示下一道题目,如下:
```java
private void nextQuestion() {
int currentQuestion = getCurrentQuestion();
if (currentQuestion == 4) {
JOptionPane.showMessageDialog(frame, "Quiz finished!");
System.exit(0);
return;
}
questionLabel.setText(questions[currentQuestion + 1].getQuestion());
String[] options = questions[currentQuestion + 1].getOptions();
for (int i = 0; i < 4; i++) {
optionButtons[i].setText(options[i]);
optionButtons[i].setSelected(false);
}
}
```
当所有题目都回答完毕后,我们显示一个对话框,提示用户完成了测验,并退出程序。最后,我们还需要添加一个判断类,用于判断选择的答案是否正确,如下:
```java
public class Judge {
public static boolean isCorrect(int answer, int selectedOption) {
return answer == selectedOption;
}
}
```
我们可以在提交按钮的 ActionListener 中调用 Judge.isCorrect() 方法来判断所选答案是否正确。完整的代码如下:
阅读全文