该小程序使用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自动答题计时计分器相关推荐

  1. java工具类_非常实用的Java工具类,拿走不谢(一)

    一.时间工具类:格式化时间.计算时间 (1)DateUtils.java package com.lhf; import java.text.SimpleDateFormat; /** * 日期格式化 ...

  2. java 编程技巧_一些实用的 Java 编程技巧

    任何事情有可能出错,没错,的确如此. 这就是为什么我们要采用"防御性编程",即一些偏执习惯的原因.下面是我个人认为的 10 个最有用但偏执的 Java 编程技术.一起来看一看吧: ...

  3. 篮球比赛计时计分系统java_非常实用的java自动答题计时计分器

    该小程序使用java语言编写,让用户计算10以内的加减乘除法,特别适合小学开始学习加减乘除法的学生,能很好地锻炼他们的运算能力,并过计分计时的游戏性质引起学习兴趣! 运行该程序会弹出一个窗口,按ent ...

  4. 支持java虚拟主机_为何缺乏支持Java的虚拟主机

    现在很多站长们,都青睐于香港虚拟主机建站.现在常见的是asp和PHP的程序空间很多,但是Java的少之又少,下面小编我给大家聊一聊! 一.香港Java虚拟主机成本高 使用Java程序建站,就必须要用支 ...

  5. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  6. java 判断类型_如何快速入门Java编程学习(干货)

    一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...

  7. 孙鑫java基础视频教程_孙鑫老师JAVA无难事视频教程 最适合java入门学习打基础的课程 附源码讲义 12课...

    课程介绍 由孙鑫老师亲自授课录制.内容涵盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟,学员通过本套光盘的学习,能够快速掌握Java编程语言,成为Java高手. 由孙鑫老师亲自授课录制.内容涵盖 ...

  8. 做Java头发少_这35个Java代码优化细节,你用了吗

    链接:https://www.jianshu.com/p/6e472304b5ac 前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有 ...

  9. 我的世java途径错误_我的世界JAVA路径错误的解决方法分享

    我的世界JAVA路径错误该怎么解决呢?JAVA是Minecraft运行的虚拟环境必要条件,需要您安装后才开始游戏.很多童鞋在安装过程中都遇到了JAVA路径错误的提示,这是什么原因导致的?第一手游网必须 ...

最新文章

  1. ccs matlab联调,MATLAB与CCS联调中idelink_ert_tlc和ert_tlc选择
  2. 关于SQL Server 数据库归档的一些思考和改进
  3. steam怎么看邮箱绑定的账号_lol手游appleid怎么绑定拳头账号 英雄联盟手游账号绑定方法_英雄联盟手游...
  4. [设计模式]观察者模式
  5. 前端学习(2504):vue指令v-for key
  6. linux一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书)
  7. oracle包同义词报错,Oracle——04同义词与数据库链接
  8. 9W人脸清洗的问题--20170208
  9. places365_Google Places API网络服务示例
  10. ubuntu查看默认python版本_更改Ubuntu默认python版本的两种方法python- Anaconda
  11. 联想微型计算机扬天s711怎么拆,如何优雅的拆掉一体机电脑 Lenovo 联想 扬天S5250...
  12. 计算机键盘正确指法,键盘指法,详细教您盲打及快速打字指法练习的步骤
  13. 使用iperf3网络速度测试工具测试Windows和Ubuntu两台机器的网口速率
  14. pow函数python_pythonpow函数怎么用
  15. Cesium 显示三维地球和地图的开源js库
  16. 华为路由器交换机配置命令
  17. 高逼格的 SQL 写法:行行比较 !
  18. 动态规划算法之断句问题
  19. 调试页面或样式一定要关闭拦截广告的插件
  20. 一文弄懂Redis慢查询

热门文章

  1. idea 搭建spring boot 项目
  2. 适定、超定和欠定方程的概念
  3. mybaties分页
  4. Go 学习笔记(49)— Go 标准库之 io/ioutil(读写文件、获取目录下的文件和子目录、创建临时目录和文件)
  5. 完美的隐藏软键盘方法
  6. 关于Page翻页效果--Page View Controller
  7. 关闭Windows 7中的 Program Compatibility Assistant
  8. 在SQL Server 2000 和SQL Server 2005中导出表结构
  9. [C++对象模型][6]sizeof与对象内存布局
  10. Ubuntu16.04 配置记录(持续更新)