算数测试(Java实验)

来源:互联网 发布:java产生0到99的随机数 编辑:程序博客网 时间:2024/05/21 05:24

题目描述:

编写一个算术测试小软件,用来训练小学生的算术能力。

Teacher类对象充当监视器,负责给出算术题目,并判断回答者的答案是否正确。

package math;import java.util.Random;import java.awt.event.*;import javax.swing.*;public class Teacher implements ActionListener{int numberOne,numberTwo;String operator="";boolean isRight;Random random;int maxInteger;JTextField textOne,textTwo,textResult;JLabel operatorLabel,message;Teacher(){random = new Random();}public void setMaxInteger(int n){maxInteger=n;}public void actionPerformed(ActionEvent e){String str=e.getActionCommand();if(str.equals("getProblem")){numberOne=random.nextInt(maxInteger)+1;numberTwo=random.nextInt(maxInteger)+1;double d=Math.random();if(d>=0.5)operator="+";elseoperator="-";textOne.setText(""+numberOne);textTwo.setText(""+numberTwo);operatorLabel.setText(operator);message.setText("请回答");textResult.setText(null);}else if(str.equals("answer")){String answer = textResult.getText();try{ int result=Integer.parseInt(answer);if(operator.equals("+")){if(result==numberOne+numberTwo)message.setText("你回答正确");elsemessage.setText("你回答错误");}else if(operator.equals("-")){if(result==numberOne-numberTwo)message.setText("你回答正确");elsemessage.setText("你回答错误");}}catch(NumberFormatException ex){message.setText("请输入数字字符");}}}public void setJTextField(JTextField...t){textOne=t[0];textTwo=t[1];textResult=t[2];}public void setJLabel(JLabel...label){operatorLabel=label[0];message=label[1];}}


ComputerFrame对象负责为算术题目 提供视图。

package math;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ComputerFrame extends JFrame {JMenuBar menubar;JMenu choiceGrade;JMenuItem grade1,grade2;JTextField textOne,textTwo,textResult;JButton getProblem,giveAnswer;JLabel operatorLabel,message;Teacher teacherZhang;ComputerFrame(){teacherZhang=new Teacher();teacherZhang.setMaxInteger(20);setLayout(new FlowLayout());menubar=new JMenuBar();choiceGrade=new JMenu("选择级别");grade1=new JMenuItem("幼儿级别");grade2=new JMenuItem("儿童级别");grade1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){teacherZhang.setMaxInteger(10);}});grade2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){teacherZhang.setMaxInteger(50);}});choiceGrade.add(grade1);choiceGrade.add(grade2);menubar.add(choiceGrade);setJMenuBar(menubar);textOne=new JTextField(5);textTwo=new JTextField(5);textResult=new JTextField(5);operatorLabel=new JLabel("+");operatorLabel.setFont(new Font("Arial",Font.BOLD,20));message=new JLabel("你还没有回答呢");getProblem=new JButton("获取题目");giveAnswer=new JButton("获取答案");add(textOne);add(operatorLabel);add(textTwo);add(new JLabel("="));add(textResult);add(giveAnswer);add(message);add(getProblem);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false);getProblem.setActionCommand("getProblem");textResult.setActionCommand("answer");giveAnswer.setActionCommand("answer");teacherZhang.setJTextField(textOne,textTwo,textResult);teacherZhang.setJLabel(operatorLabel,message);getProblem.addActionListener(teacherZhang);giveAnswer.addActionListener(teacherZhang);textResult.addActionListener(teacherZhang);setVisible(true);validate();setDefaultCloseOperation(DISPOSE_ON_CLOSE);}}


MainClass 主类

package math;public class MainClass {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubComputerFrame frame;frame=new ComputerFrame();frame.setTitle("算数测试");frame.setBounds(100,100,650,180);}}

运行结果:



原创粉丝点击