优化以下代码 public void actionPerformed(ActionEvent e) { // 判断是否选择了答案 int selectedOptionIndex = -1; for (int i = 0; i < optionButtons.length; i++) { if (optionButtons[i].isSelected()) { selectedOptionIndex = i; break; } } if (selectedOptionIndex == -1) { JOptionPane.showMessageDialog(this, "请选择一个答案"); return; } // 获取选中的选项值 String selectedAnswer = optionButtons[selectedOptionIndex].getText(); // 获取正确答案 String correctAnswer = question.getAnswer(currentQuestionIndex); // 将选择的选项与答案进行比较,并输出你选的答案和题目的正确答案 if (Judge.isCorrect(selectedOptionIndex, currentQuestionIndex)) { JOptionPane.showMessageDialog(this, "正确"); score+=20; } else { JOptionPane.showMessageDialog(this, "错误,你选择的是" + selectedAnswer + ",正确答案是" + correctAnswer); } // 显示下一道题目 currentQuestionIndex++; if (currentQuestionIndex == question.getQuestionCount()) { JOptionPane.showMessageDialog(this, "你的分数是" + score); System.exit(0); } showQuestion(); }
时间: 2024-02-14 15:09:49 浏览: 67
可以考虑对以下几个方面进行优化:
1. 对于判断是否选择了答案,可以使用 Java 8 引入的流式编程的方式,使用 Stream.anyMatch() 方法判断是否有一个选项被选中,代码如下:
```
if (Arrays.stream(optionButtons).noneMatch(AbstractButton::isSelected)) {
JOptionPane.showMessageDialog(this, "请选择一个答案");
return;
}
```
2. 在获取选中的选项值和正确答案时,可以将这两行代码提取为一个方法,减少代码的重复性,代码如下:
```
private String getSelectedAnswer() {
return optionButtons[selectedOptionIndex].getText();
}
private String getCorrectAnswer() {
return question.getAnswer(currentQuestionIndex);
}
```
3. 在比较选择的选项与答案时,可以使用 String.equals() 方法代替 Judge.isCorrect() 方法,代码如下:
```
if (selectedAnswer.equals(correctAnswer)) {
JOptionPane.showMessageDialog(this, "正确");
score += 20;
} else {
JOptionPane.showMessageDialog(this, "错误,你选择的是" + selectedAnswer + ",正确答案是" + correctAnswer);
}
```
4. 在显示下一道题目时,可以将代码提取为一个方法,减少代码的重复性,代码如下:
```
private void showNextQuestion() {
currentQuestionIndex++;
if (currentQuestionIndex == question.getQuestionCount()) {
JOptionPane.showMessageDialog(this, "你的分数是" + score);
System.exit(0);
}
showQuestion();
}
```
最终优化后的代码如下:
```
public void actionPerformed(ActionEvent e) {
// 判断是否选择了答案
if (Arrays.stream(optionButtons).noneMatch(AbstractButton::isSelected)) {
JOptionPane.showMessageDialog(this, "请选择一个答案");
return;
}
// 获取选中的选项值和正确答案
int selectedOptionIndex = IntStream.range(0, optionButtons.length)
.filter(i -> optionButtons[i].isSelected())
.findFirst()
.orElse(-1);
String selectedAnswer = getSelectedAnswer();
String correctAnswer = getCorrectAnswer();
// 将选择的选项与答案进行比较,并输出你选的答案和题目的正确答案
if (selectedAnswer.equals(correctAnswer)) {
JOptionPane.showMessageDialog(this, "正确");
score += 20;
} else {
JOptionPane.showMessageDialog(this, "错误,你选择的是" + selectedAnswer + ",正确答案是" + correctAnswer);
}
// 显示下一道题目
showNextQuestion();
}
private String getSelectedAnswer() {
return optionButtons[selectedOptionIndex].getText();
}
private String getCorrectAnswer() {
return question.getAnswer(currentQuestionIndex);
}
private void showNextQuestion() {
currentQuestionIndex++;
if (currentQuestionIndex == question.getQuestionCount()) {
JOptionPane.showMessageDialog(this, "你的分数是" + score);
System.exit(0);
}
showQuestion();
}
```
阅读全文
相关推荐


















