java实现计分_非常实用的java自动答题计时计分器
该小程序使用java语言编写,让用户计算10以内的加减乘除法,特别适合小学开始学习加减乘除法的学生,能很好地锻炼他们的运算能力,并过计分计时的游戏性质引起学习兴趣!
运行该程序会弹出一个窗口,按enter键开始答题,答完再按enter则进行计分和正确性判断,并出下一道题!每轮10道题,每题10分,答完自动计时记分,全程操作只需要按enter键,无其他按钮,幼儿园小学生都会玩!
并且在输入合法性方面,也做了相关校验和提示!欢迎大家发挥想象力,再此基础上再丰富和完善!
@H_301_7@
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",24));
getContentPane().add(labA);
labOp.setText("+");
labOp.setFont(new Font("Dialog",24));
labOp.setBounds(72,45,36);
getContentPane().add(labOp);
labB.setText("y");
labB.setFont(new Font("Dialog",24));
labB.setBounds(118,33,36);
getContentPane().add(labB);
label5.setText("=");
label5.setFont(new Font("Dialog",24));
label5.setBounds(168,24,36);
getContentPane().add(label5);
labWarn.setFont(new Font("Dialog",12));
labWarn.setBackground(Color.RED);
labWarn.setBounds(320,80,36);
labWarn.setVisible(false);
getContentPane().add(labWarn);
labQues.setText("答题列表:");
labQues.setFont(new Font("Dialog",12));
labQues.setBounds(36,148,100,20);
getContentPane().add(labQues);
labResult.setText("分数统计:");
labResult.setFont(new Font("Dialog",12));
labResult.setBounds(36,420,20);
labResult.setVisible(false);
getContentPane().add(labResult);
txtAnswer.setFont(new Font("Dialog",24));
txtAnswer.setBounds(216,36);
getContentPane().add(txtAnswer);
listDisp.setFont(new Font("Dialog",16));
listDisp.setBounds(36,174,282,230);
getContentPane().add(listDisp);
listscore.setFont(new Font("Dialog",16));
listscore.setBounds(36,450,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;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250
java实现计分_非常实用的java自动答题计时计分器相关推荐
- java工具类_非常实用的Java工具类,拿走不谢(一)
一.时间工具类:格式化时间.计算时间 (1)DateUtils.java package com.lhf; import java.text.SimpleDateFormat; /** * 日期格式化 ...
- java 编程技巧_一些实用的 Java 编程技巧
任何事情有可能出错,没错,的确如此. 这就是为什么我们要采用"防御性编程",即一些偏执习惯的原因.下面是我个人认为的 10 个最有用但偏执的 Java 编程技术.一起来看一看吧: ...
- 篮球比赛计时计分系统java_非常实用的java自动答题计时计分器
该小程序使用java语言编写,让用户计算10以内的加减乘除法,特别适合小学开始学习加减乘除法的学生,能很好地锻炼他们的运算能力,并过计分计时的游戏性质引起学习兴趣! 运行该程序会弹出一个窗口,按ent ...
- 支持java虚拟主机_为何缺乏支持Java的虚拟主机
现在很多站长们,都青睐于香港虚拟主机建站.现在常见的是asp和PHP的程序空间很多,但是Java的少之又少,下面小编我给大家聊一聊! 一.香港Java虚拟主机成本高 使用Java程序建站,就必须要用支 ...
- java python算法_用Python,Java和C ++示例解释的排序算法
java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...
- java 判断类型_如何快速入门Java编程学习(干货)
一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...
- 孙鑫java基础视频教程_孙鑫老师JAVA无难事视频教程 最适合java入门学习打基础的课程 附源码讲义 12课...
课程介绍 由孙鑫老师亲自授课录制.内容涵盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟,学员通过本套光盘的学习,能够快速掌握Java编程语言,成为Java高手. 由孙鑫老师亲自授课录制.内容涵盖 ...
- 做Java头发少_这35个Java代码优化细节,你用了吗
链接:https://www.jianshu.com/p/6e472304b5ac 前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有 ...
- 我的世java途径错误_我的世界JAVA路径错误的解决方法分享
我的世界JAVA路径错误该怎么解决呢?JAVA是Minecraft运行的虚拟环境必要条件,需要您安装后才开始游戏.很多童鞋在安装过程中都遇到了JAVA路径错误的提示,这是什么原因导致的?第一手游网必须 ...
最新文章
- ccs matlab联调,MATLAB与CCS联调中idelink_ert_tlc和ert_tlc选择
- 关于SQL Server 数据库归档的一些思考和改进
- steam怎么看邮箱绑定的账号_lol手游appleid怎么绑定拳头账号 英雄联盟手游账号绑定方法_英雄联盟手游...
- [设计模式]观察者模式
- 前端学习(2504):vue指令v-for key
- linux一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书)
- oracle包同义词报错,Oracle——04同义词与数据库链接
- 9W人脸清洗的问题--20170208
- places365_Google Places API网络服务示例
- ubuntu查看默认python版本_更改Ubuntu默认python版本的两种方法python- Anaconda
- 联想微型计算机扬天s711怎么拆,如何优雅的拆掉一体机电脑 Lenovo 联想 扬天S5250...
- 计算机键盘正确指法,键盘指法,详细教您盲打及快速打字指法练习的步骤
- 使用iperf3网络速度测试工具测试Windows和Ubuntu两台机器的网口速率
- pow函数python_pythonpow函数怎么用
- Cesium 显示三维地球和地图的开源js库
- 华为路由器交换机配置命令
- 高逼格的 SQL 写法:行行比较 !
- 动态规划算法之断句问题
- 调试页面或样式一定要关闭拦截广告的插件
- 一文弄懂Redis慢查询
热门文章
- idea 搭建spring boot 项目
- 适定、超定和欠定方程的概念
- mybaties分页
- Go 学习笔记(49)— Go 标准库之 io/ioutil(读写文件、获取目录下的文件和子目录、创建临时目录和文件)
- 完美的隐藏软键盘方法
- 关于Page翻页效果--Page View Controller
- 关闭Windows 7中的 Program Compatibility Assistant
- 在SQL Server 2000 和SQL Server 2005中导出表结构
- [C++对象模型][6]sizeof与对象内存布局
- Ubuntu16.04 配置记录(持续更新)