练习题Java"/>
小学数学练习题Java
小学数学练习
2.1【问题描述】
编写一个帮助小学生练习数学的程序,帮助小学生练习100以内的四种数学运算:加、减、乘、除。
2.2【基本要求】
a)程序应先询问用户的ID号(ID号的前两个字符是大写字母,后四个字符是4位数字),例如:
请输入用户ID号:AB1234
程序应对输入的ID号验证,符合ID号要求的格式,然后程序提示三种操作选择:
(1)开始测试
(2)检查分数
(3)退出
b)测试:该程序将给出 10 道数学题,例如:
12 * 3 = 36
48 + 32 = 80
„
56 / 28 = 2
注意:
i)学生将依次回答每一个问题(在等于号后面给出答案),然后给出下一道题。
ii)试题应包含四种数学运算:加、减、乘、除,它们是随机产生的。相邻的问题应该是不同的操作, 每个操作必须至少出现一次。报告中应给出实现方法或算法。
iii)为每道题随机生成数字,但必须确保参与运算的数字和结果都小于100且大于零的整数,除法时还要注意两个整数要能整除。报告中应给出实现方法或算法。
iv)十道题做完后,记录学生完成这十道题所用的时间。
v)给每个学生一个分数。将该学生的 ID、成绩和使用时间保存到一个为 record.txt 的文件中。
vi)在屏幕上输出以下信息:(3列信息,第1列是b)中的测试题,蓝色部分)
问题 | 正确答案 | 你的答案
c)成绩检查:从文件“record.txt”中列出该学生的所有历史成绩(其他学生的不显示)。例如:
你以前的记录是:
AB1234 80 150 秒
AB1234 50 182 秒
AB1234 90 98秒
问题描述:
需要做成一个交互页面,判断录入同学的信息是否正确,能够随机出现小学数学题目,并且要能记录时间、保存答题记录。还要能够判断出输入答案的正确性
问题分析:
判断录入同学信息可以根据ascii码的区间来辨别,之后运用随机生成数字来创造十个小学算术,同时用记录文档的函数将每次答题的信息记录下来。
功能实现:
package com.report;import java.io.File;
import java.io.FileWriter;
import java.util.Arrays;
import java.util.Scanner;
import java.lang.System;public class Test {static String[] sb = new String[10];public static void main(String[] args) {String[][] test0 = new String[3][4];String[] test = new String[4];int q = 0;System.out.println("欢迎来到太理测试乐园!!!");System.out.println("先输入独属于宝子你的专属ID账号吧!");while (true) {System.out.println("(ID账号是由2位大写字母和4位数字组成的哦!!!)");Scanner sc0 = new Scanner(System.in);String sc = sc0.next();char[] id = sc.toCharArray();if (!inspection(id)) {System.out.println("输入错误,重新输入:");} else {test[0] = String.valueOf(id);test0[q][0] = test[0];break;}} try {// 此处我放在了这个位置,可以更换File file = new File("D:\\record.txt");if (!file.isFile()) // 如果没有该文件,就新建一个file.createNewFile();FileWriter fileWriter = new FileWriter(file, true); // 通过 true 设置追加fileWriter.write("你以前的记录是: \n");fileWriter.flush(); // 清空缓存区,压入文件fileWriter.close();boolean flag = true;while (flag) {System.out.println("1.测试计算");System.out.println("2.本次测试数据");System.out.println("3.退出");System.out.println("既然辣馍喜欢测试,辣就请做出你的选择吧");Scanner ch0 = new Scanner(System.in);int ch = ch0.nextInt();int j = 0;if (ch == 1) {System.out.println("马上就要开始测试了,准备好了吗?");System.out.println("一道题10分,一共十道题,满分100分!");System.out.println("测试游戏正式开始!!!");long startTime = System.currentTimeMillis();String grade;int k = 0;while (j < 9) {double x = Math.random();double min = 0, max = 100;double y = x * (max - min) + min;double m = Math.random();double min1 = 0, max1 = 100;double n = m * (max1 - min1) + min1;long a = (long) y, b = (long) n;max = 4;y = x * (max - min) + min;long si = (long) y;int an = 0;char si0 = '+';if (si == 0) {j++;an = Integer.parseInt(String.valueOf(a)) + Integer.parseInt(String.valueOf(b));} else if (si == 1) {si0 = '-';j++;an = Integer.parseInt(String.valueOf(a)) - Integer.parseInt(String.valueOf(b));} else if (si == 2) {si0 = '*';j++;an = Integer.parseInt(String.valueOf(a)) * Integer.parseInt(String.valueOf(b));} else if (si == 3 && Integer.parseInt(String.valueOf(a)) != 0) {si0 = '/';j++;an = Integer.parseInt(String.valueOf(a)) / Integer.parseInt(String.valueOf(a));} else if (si == 3 && Integer.parseInt(String.valueOf(a)) == 0) {throw new ArithmeticException();}System.out.print("第" + j + "个式子:\t" + a + si0 + b + " =");Scanner p = new Scanner(System.in);int an0 = p.nextInt();//System.out.println(an);sb[j - 1] = (a + " " + si0 + " " + b + "= " + an + "\t" + an0);if (an0 == an) {k++;}}long endTime = System.currentTimeMillis();test[2] = String.valueOf((endTime - startTime) / 1000);test[1] = String.valueOf(k * 10);switch (k) {case 10:grade = "优秀 请继续保持!";case 9:grade = "良好 查漏补缺";case 8:grade = "良好 查漏补缺";case 7:grade = "及格 再接再厉呀!";case 6:grade = "及格 再接再厉呀!";default:grade = "差 要认真反思呀!";}test[3] = grade;test0[q][1] = test[1];test0[q][2] = test[2];test0[q][3] = test[3];System.out.println(" 问题 | 正确答案 | 你的答案");for (int i = 0; i < 9; i++) {System.out.println(sb[i]);}q++;test0[q][0] = test[0];} else if (ch == 2) {System.out.println("你以前的记录是: ");System.out.println(test[0] + " " + test[1] + " " + test[2] + "秒");} else if (ch == 3) {System.out.println("正在退出……");flag = false;file.delete(); // 删除文件break;} else {System.out.println("输入错误,请在1~4中做出选择");}}}catch(Exception e) {e.printStackTrace();}}private static boolean inspection(char[] id) {if(id.length!=6){System.out.println("提示: 用户名ID是六位大写字母和数字组成的哦!");return false;}for(int a=0;a<id.length;a++) {if (a < 2) {//判断是否为大写字母if (!Character.isUpperCase(id[a])) { // 前两位不是大写字母System.out.println("提示: 用户名ID的前两位应该是大写字母哦! ");return false;}} else if(a>=2&&a<6) {//判断是否为数字if (!Character.isDigit(id[a])) { // 后四位不是数字System.out.println("提示: 用户名ID的后四位应该是数字哦! ");return false;}}}return true;}}
运行结果:
更多推荐
小学数学练习题Java
发布评论