91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java如何實現自動答題計時計分器

發布時間:2021-08-19 14:17:35 來源:億速云 閱讀:155 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關java如何實現自動答題計時計分器,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

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

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

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

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

關于“java如何實現自動答題計時計分器”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永福县| 博乐市| 昭通市| 大同县| 龙门县| 桑植县| 河南省| 调兵山市| 芮城县| 裕民县| 华安县| 太和县| 德令哈市| 西平县| 梁平县| 灵丘县| 武穴市| 筠连县| 太谷县| 阜阳市| 湖南省| 玉门市| 阜新| 广西| 临泽县| 丰原市| 伊宁市| 得荣县| 潮州市| 新泰市| 灵璧县| 沁源县| 静海县| 察雅县| 陆河县| 凉城县| 灵台县| 扬中市| 微博| 新田县| 油尖旺区|