天天泡菊花降火?别喝错体质,小心越喝越伤脾胃
2026/7/2 4:21:32
实验 4 Java Swing 小学生算术答题系统
功能
支持加减乘除四则运算
随机生成整数算术题,可切换难度
输入答案点击判断对错,实时提示
统计答对、答错数量
界面整洁 Swing 图形窗口`
代码
importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.Random;publicclassMathPracticeextendsJFrame{// 界面组件privateJLabellblQuestion;// 题目显示privateJTextFieldtxtAnswer;// 答案输入框privateJButtonbtnCheck;// 判断答案按钮privateJButtonbtnNext;// 下一题按钮privateJComboBox<String>cbLevel;// 难度选择privateJLabellblResultTip;// 对错提示privateJLabellblCount;// 统计对错// 题目数据privateRandomrandom=newRandom();privateintnum1,num2,op;privateintright=0,wrong=0;publicMathPractice(){initUI();createNewQuestion();}// 初始化界面privatevoidinitUI(){setTitle("小学生算术练习器");setSize(420,280);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLocationRelativeTo(null);// 窗口居中setLayout(newGridLayout(6,1,10,10));setBorder(BorderFactory.createEmptyBorder(20,20,20,20));// 1. 难度选择行JPanelpanelLevel=newJPanel();panelLevel.add(newJLabel("选择难度:"));cbLevel=newJComboBox<>();cbLevel.addItem("简单(0~9)");cbLevel.addItem("普通(0~99)");cbLevel.addItem("困难(0~999)");panelLevel.add(cbLevel);add(panelLevel);// 2. 题目展示lblQuestion=newJLabel("题目:",SwingConstants.CENTER);lblQuestion.setFont(newFont("微软雅黑",Font.BOLD,24));add(lblQuestion);// 3. 答案输入行JPanelpanelInput=newJPanel();panelInput.add(newJLabel("你的答案:"));txtAnswer=newJTextField(10);txtAnswer.setFont(newFont("微软雅黑",Font.PLAIN,18));panelInput.add(txtAnswer);add(panelInput);// 4. 按钮行JPanelpanelBtn=newJPanel();btnCheck=newJButton("判断对错");btnNext=newJButton("下一题");panelBtn.add(btnCheck);panelBtn.add(btnNext);add(panelBtn);// 5. 对错提示lblResultTip=newJLabel("请输入答案",SwingConstants.CENTER);lblResultTip.setFont(newFont("微软雅黑",Font.BOLD,16));add(lblResultTip);// 6. 统计lblCount=newJLabel("答对:0 道 | 答错:0 道",SwingConstants.CENTER);add(lblCount);// 绑定按钮事件btnCheck.addActionListener(newCheckListener());btnNext.addActionListener(e->createNewQuestion());}// 生成新题目privatevoidcreateNewQuestion(){// 根据难度获取数值范围intmax;Stringlevel=(String)cbLevel.getSelectedItem();if(level.contains("简单"))max=10;elseif(level.contains("普通"))max=100;elsemax=1000;num1=random.nextInt(max);num2=random.nextInt(max);op=random.nextInt(4);// 0+ 1- 2* 3/// 除法保证整除、除数不为0if(op==3){while(num2==0||num1%num2!=0){num1=random.nextInt(max);num2=random.nextInt(max);}}// 减法保证结果非负if(op==1&&num1<num2){inttemp=num1;num1=num2;num2=temp;}// 拼接题目字符串StringopStr=switch(op){case0->"+";case1->"-";case2->"×";case3->"÷";default->"";};lblQuestion.setText(num1+" "+opStr+" "+num2+" = ?");// 清空输入框与提示txtAnswer.setText("");lblResultTip.setText("请输入答案");lblResultTip.setForeground(Color.BLACK);}// 计算正确答案privateintgetCorrectAnswer(){returnswitch(op){case0->num1+num2;case1->num1-num2;case2->num1*num2;case3->num1/num2;default->0;};}// 判断按钮监听器classCheckListenerimplementsActionListener{@OverridepublicvoidactionPerformed(ActionEvente){Stringinput=txtAnswer.getText().trim();if(input.isEmpty()){lblResultTip.setText("请输入数字答案!");lblResultTip.setForeground(Color.ORANGE);return;}intuserAns;try{userAns=Integer.parseInt(input);}catch(NumberFormatExceptionex){lblResultTip.setText("输入不是有效数字!");lblResultTip.setForeground(Color.RED);return;}intcorrect=getCorrectAnswer();if(userAns==correct){right++;lblResultTip.setText("回答正确!真棒👍");lblResultTip.setForeground(Color.GREEN);}else{wrong++;lblResultTip.setText("答错啦,正确答案:"+correct);lblResultTip.setForeground(Color.RED);}// 更新统计lblCount.setText("答对:"+right+" 道 | 答错:"+wrong+" 道");}}publicstaticvoidmain(String[]args){// Swing程序建议在事件调度线程启动SwingUtilities.invokeLater(()->{newMathPractice().setVisible(true);});}}结果演示: