小学数学练习题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;
    }


}

运行结果:

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值