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

來源:互聯網
上載者:User

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

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

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

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

代碼:

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

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.