国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

非常實用的java自動答題計時計分器

2024-07-13 10:16:49
字體:
來源:轉載
供稿:網友

該小程序使用java語言編寫,讓用戶計算10以內的加減乘除法,特別適合小學開始學習加減乘除法的學生,能很好地鍛煉他們的運算能力,并過計分計時的游戲性質引起學習興趣!

運行該程序會彈出一個窗口,按enter鍵開始答題,答完再按enter則進行計分和正確性判斷,并出下一道題!每輪10道題,每題10分,答完自動計時記分,全程操作只需要按enter鍵,無其他按鈕,幼兒園小學生都會玩!

并且在輸入合法性方面,也做了相關校驗和提示!歡迎大家發揮想象力,再此基礎上再豐富和完善!

java,自動答題,計時,計分器,java答題計分器,java自動答題計分器

代碼:

package autoScore;   import java.awt.Color; import java.awt.Font; import java.awt.Label; import java.awt.List; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.text.DecimalFormat;   import javax.swing.JFrame;  public class AutoScore extends JFrame{  Label labRule=new Label();//規則描述標簽  Label labA=new Label();//第一個數字標簽  Label labOp=new Label();//加減乘除標簽  Label labB=new Label();//第二個數字標簽  Label label5=new Label();//等于號“=”標簽  Label labWarn=new Label();//輸入合法性校驗提示標簽  Label labQues=new Label();//答題列表標簽  Label labResult=new Label();//判分標簽  TextField txtAnswer=new TextField();//輸入答案輸入框    int total=0;//記錄答題總數  int right=0;//記錄答題正確數量  int error=0;//記錄答題錯誤數量  int score=0;//記錄答題總分  boolean isOver=false;//一輪結束后標識  boolean isFirst=true;//程序第一次運行標識    long startTime;//每一輪運行開始時間    List listDisp=new List();//答題列表展示框  List listScore=new List();//分數展示框    public static void main(String[] args){   AutoScore score=new AutoScore();  }    public AutoScore(){   init();   setSize(450,630);   setDefaultCloseOperation(EXIT_ON_CLOSE);   setVisible(true);  }     public void init(){   setLayout(null);   setSize(450,630);     labRule.setText("規則:每組十道題,每題10分,按ENTER鍵開始,小數保留2位");   labRule.setBounds(36, 10, 390, 72);   labRule.setFont(new Font("Dialog",Font.PLAIN,12));   getContentPane().add(labRule);      labA.setText("x");   labA.setBounds(36,82,36,36);   labA.setFont(new Font("Dialog",Font.PLAIN,24));   getContentPane().add(labA);      labOp.setText("+");   labOp.setFont(new Font("Dialog",Font.PLAIN,24));   labOp.setBounds(72, 82, 45, 36);   getContentPane().add(labOp);      labB.setText("y");   labB.setFont(new Font("Dialog",Font.PLAIN,24));   labB.setBounds(118, 82, 33, 36);   getContentPane().add(labB);      label5.setText("=");   label5.setFont(new Font("Dialog",Font.PLAIN,24));   label5.setBounds(168, 82, 24, 36);   getContentPane().add(label5);         labWarn.setFont(new Font("Dialog",Font.PLAIN,12));   labWarn.setBackground(Color.RED);   labWarn.setBounds(320, 82, 80, 36);   labWarn.setVisible(false);   getContentPane().add(labWarn);      labQues.setText("答題列表:");   labQues.setFont(new Font("Dialog",Font.PLAIN,12));   labQues.setBounds(36, 148, 100, 20);   getContentPane().add(labQues);      labResult.setText("分數統計:");   labResult.setFont(new Font("Dialog",Font.PLAIN,12));   labResult.setBounds(36,420,100,20);   labResult.setVisible(false);   getContentPane().add(labResult);      txtAnswer.setFont(new Font("Dialog",Font.PLAIN,24));   txtAnswer.setBounds(216, 82, 100, 36);   getContentPane().add(txtAnswer);         listDisp.setFont(new Font("Dialog",Font.PLAIN,16));   listDisp.setBounds(36, 174, 282, 230);   getContentPane().add(listDisp);      listScore.setFont(new Font("Dialog",Font.PLAIN,16));   listScore.setBounds(36,450,282,135);      MyKey myKey=new MyKey();// 答案輸入框,鍵盤按鍵監聽類   txtAnswer.addKeyListener(myKey);     }    class MyKey implements KeyListener{    @Override   public void keyTyped(KeyEvent e) {       }    @Override   public void keyPressed(KeyEvent e) {    if(e.getSource()==txtAnswer){     if(e.getKeyCode()==KeyEvent.VK_ENTER){      if(isOver || isFirst){       updateQuestion(null);      }else if("".equals(txtAnswer.getText())){       labWarn.setText("請輸入答案!");       labWarn.setVisible(true);      }else{       labWarn.setVisible(false);       if(!isNumber(txtAnswer.getText())){        labWarn.setText("請輸入數字!");        labWarn.setVisible(true);       }else if(total<9){        judge(null);        updateQuestion(null);       }else{        judge(null);        labResult.setVisible(true);        scorePerformed(null);       }      }     }    }       }    @Override   public void keyReleased(KeyEvent e) {       }     }      int a=0,b=0;  String op="";  double result=0;  DecimalFormat df=new DecimalFormat("#.00");  /**   * 出題方法   * @param e   */  public void updateQuestion(ActionEvent e){   if(isFirst){    startTime=System.currentTimeMillis();   }   if(isOver==true){    listDisp.clear();    listScore.clear();    labResult.setVisible(false);    listScore.setVisible(false);   }   isOver=false;   a=(int)(Math.random()*9+1);   b=(int)(Math.random()*9+1);   int c=(int)(Math.random()*4);   switch (c) {   case 0:    op="+";    result=a+b;    break;   case 1:    op="-";    result=a-b;    break;   case 2:    op="*";    result=a*b;    break;   case 3:    op="/";    result=(a*1.0)/b;    //若兩個數除不盡,則按四舍五入保留2位小數    if(String.valueOf(result).length()>10){     result=Double.parseDouble(df.format((a*1.0)/b));    }    break;   }   labA.setText(String.valueOf(a));   labB.setText(String.valueOf(b));   labOp.setText(op);   label5.setText("=");   txtAnswer.setText("");   isFirst=false;     }  /**   * 判斷結果   * @param e   */  public void judge(ActionEvent e){   try{    double value=Double.parseDouble(txtAnswer.getText());    String resultStr=(total+1)+"、 "+a+op+b+"="+value;    if(value==result){     resultStr+=" /t正確";     right++;     score+=10;    }else{     resultStr+=" /t錯誤 正確答案:"+result;     error++;    }    listDisp.add(resultStr);    total++;   }catch(NumberFormatException ignored){   }  }  /**   * 統計分數   * @param e   */  public void scorePerformed(ActionEvent e){   isOver=true;   listScore.clear();   listScore.setVisible(true);   String exitStr="本次共答題"+total+"道";   listScore.add(exitStr);   listScore.add("累計用時:"+(System.currentTimeMillis()-startTime)/1000+"秒");   listScore.add("答對:"+right+"個");   listScore.add("答錯:"+error+"個");   listScore.add("得分:"+score+"分");   getContentPane().add(listScore);   score=0;   right=0;   error=0;   total=0;     }    /**   * 校驗輸入是否位數字   * @param numberStr   * @return   */  public boolean isNumber(String numberStr){   boolean isNumber=true;   try{    Double.parseDouble(numberStr);   }catch(NumberFormatException e){    isNumber=false;   }   return isNumber;  } } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仁怀市| 济阳县| 冷水江市| 肥东县| 凭祥市| 新晃| 波密县| 凉城县| 文化| 昌乐县| 鸡东县| 潼南县| 承德县| 潍坊市| 盘山县| 大兴区| 安达市| 龙江县| 林口县| 博爱县| 惠水县| 龙州县| 高平市| 都匀市| 印江| 陆川县| 太湖县| 祁阳县| 清河县| 呼伦贝尔市| 高陵县| 阿克| 左贡县| 青河县| 容城县| 板桥市| 陆川县| 理塘县| 塘沽区| 乐山市| 绥江县|