java限时答题每题十秒_java 限时答题

这是一个使用Java编写的限时答题程序,每道题目的时间为10秒。程序通过JFrame创建界面,包含计时器、试题显示区、选择题选项及分数显示。用户的选择会被监听,若在规定时间内选中正确答案则得分,否则将进入下一题。
摘要由CSDN通过智能技术生成

public class Test {

public static void main(String[] args) {

StandardExamInTime win=new StandardExamInTime();

win.setTitle("限时答题!");

win.setTestFile(new java.io.File("test.txt"));

win.setMAX(10);

}

}

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=10;

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.replace("-", "");

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){

if(booTwo){

score++;

showScore.setText("分数:"+score);

time.stop();

maxTime=MAX;

readOneQuesion();

}

else{

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);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值