求java大神告知这个程序是在回答正确是进入下一题,怎么改在回答错误时也进入下一题,且分数不变。

importjava.io.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publiccla... import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;
public class StandardExamInTime extends JFrame implements ActionListener,ItemListener{File testFile;int MAX=8;int maxTime=MAX,score=0;
javax.swing.Timer time; //计时器
JTextArea showQuesion; //显示试题
JCheckBox choiceA,choiceB,choiceC,choiceD;JLabel showScore,showTime;
String correctAnswer; //正确答案
JButton reStart;FileReader inOne; BufferedReader inTwo;
StandardExamInTime(){time=new javax.swing.Timer(1000,this);showQuesion=new JTextArea(2,16);setLayout(new FlowLayout());showScore=new JLabel("分数"+score);
showTime=new JLabel(" ");add(showTime); add(new JLabel("问题:"));add(showQuesion);choiceA=new JCheckBox("A");choiceB=new JCheckBox("B");
choiceC=new JCheckBox("C");choiceD=new JCheckBox("D"); choiceA.addItemListener(this);choiceB.addItemListener(this);choiceC.addItemListener(this);choiceD.addItemListener(this);
add(choiceA);add(choiceB);add(choiceC); add(choiceD); add(showScore);
reStart=new JButton("再做一遍");reStart.setEnabled(false); add(reStart);
reStart.addActionListener(this);setBounds(100,100,200,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);
}
public void setMAX(int n){
MAX=n;
}
public void setTestFile(File f){
testFile=f;
score=0;
try{
inOne=new FileReader(testFile);
inTwo=new BufferedReader(inOne);
readOneQuesion();
reStart.setEnabled(false);
}
catch(IOException exp){
showQuesion.setText("没有选题");
}
}
public void readOneQuesion(){
showQuesion.setText(null);
try{
String s=null;
while((s=inTwo.readLine())!=null){
if(!s.startsWith("-"))
showQuesion.append("\n"+s);
else{
s=s.replaceAll("-","");
correctAnswer=s;
break;
}
}
time.start(); //启动计时
if(s==null){
inTwo.close();
reStart.setEnabled(true);
showQuesion.setText("题目完毕");
time.stop();
}
}
catch(IOException exp){}
}
public void itemStateChanged(ItemEvent e){
JCheckBox box=(JCheckBox)e.getSource();
String str=box.getText();
boolean booOne=box.isSelected();
boolean booTwo=str.compareToIgnoreCase(correctAnswer)==0;
if(booOne&&booTwo){
score++;
showScore.setText("分数:"+score);
time.stop(); //停止计时
maxTime=MAX;
readOneQuesion(); //进入下一道题目
}

box.setSelected(false);
}

public void actionPerformed(ActionEvent e){
if(e.getSource()==time){
showTime.setText("剩:"+maxTime+"秒");
maxTime--;
if(maxTime<=0){
maxTime=MAX;
readOneQuesion(); //读入下一个题目
}
}
else if(e.getSource()==reStart){
setTestFile(testFile);
}
}
}
展开
 我来答
lzs丶灬
2016-12-07 · TA获得超过632个赞
知道小有建树答主
回答量:881
采纳率:100%
帮助的人:519万
展开全部
public void itemStateChanged(ItemEvent e) {
JCheckBox box = (JCheckBox) e.getSource();
String str = box.getText();
boolean booOne = box.isSelected();
boolean booTwo = str.compareToIgnoreCase(correctAnswer) == 0;
if (booOne) {
if(booTwo){
score++;
}
showScore.setText("分数:" + score);
time.stop(); // 停止计时
maxTime = MAX;
readOneQuesion(); // 进入下一道题目
}

box.setSelected(false);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式