一、题目:
- 请编写一个能自动生成小学四则运算题目的 “软件”。
- 让程序能接受用户输入答案,并判定对错。
- 最后给出总共以及 对/错 的数量。
二、基本要求:
- 所编写出来的“软件”选择界面设计,选择加、减、乘、除运算。
- 系统随机产生一百以内的两个数进行运算。
- 使用该软件时,用户从键盘输入结果,回答正确和回答错误都有提示,结束后系统会自动给出相应的总题数和 对/错 的数量。
三、需求分析:
- 程序能实现0~100以内的加法、减法、乘法以及除法的运算。
- 用户能在java控制窗口输入自己的答案,该程序能够判断用户所输入答案的对错。
- 测试结束后,程序能给出所做题目的数量以及所做题目对/错的数量。
四、设计:
- 定义五个变量分别是:e, r, a, b, c,其中e表示答错的题数,表示r表示答对的题数,a, b分别表示0~100之间随机产生的两个整数
- 使用Scanner类创建了多个对象并对不同的运算类型调用相应的方法。
- 加、减、乘、除用一个switch控制语句来实现,整个程序的实现在主函数中体现。
五、代码实现:
1 import java.util.Random; 2 import java.util.Scanner; 3 4 public class qq { 5 public static void main(String[] args) { 6 int e = 0, r = 0; 7 System.out.println("欢迎来到四则运算测试软件!"); 8 System.out.println("做题前请认真读题,祝您考试愉快!"); 9 Random r1 = new Random(); 10 for (int i = 0; i < 7; i++) { 11 int m, n; 12 int a, b, c; 13 m = r1.nextInt() % 10; 14 n = m % 4; 15 16 switch (n) { 17 case 0: 18 a = new Random().nextInt((int) Math.pow(10, 2)) + 1; 19 b = new Random().nextInt((int) Math.pow(10, 2)) + 1; 20 System.out.println(a + "+" + "" + b + "=?"); 21 Scanner x1 = new Scanner(System.in); 22 c = x1.nextInt(); 23 if (c != a + b) { 24 e++; 25 System.out.println("回答错误!!"); 26 } else { 27 r++; 28 System.out.println("回答正确!!"); 29 } 30 31 break; 32 33 case 1: 34 a = new Random().nextInt((int) Math.pow(10, 2)) + 1; 35 b = new Random().nextInt((int) Math.pow(10, 2)) + 1; 36 System.out.println(a + "-" + " " + b + " =?"); 37 Scanner x2 = new Scanner(System.in); 38 c = x2.nextInt(); 39 if (c != a - b) { 40 e++; 41 System.out.println("回答错误!!"); 42 } else { 43 r++; 44 System.out.println("回答正确!!"); 45 } 46 47 break; 48 49 case 2: 50 a = new Random().nextInt((int) Math.pow(10, 2)) + 1; 51 b = new Random().nextInt((int) Math.pow(10, 2)) + 1; 52 System.out.println(a + "*" + " " + b + " " + "=?"); 53 Scanner y1 = new Scanner(System.in); 54 c = y1.nextInt(); 55 if (c != a * b) { 56 e++; 57 System.out.println("回答错误!!"); 58 } else { 59 r++; 60 System.out.println("回答正确!!"); 61 } 62 63 break; 64 65 case 3: 66 double d; 67 a = new Random().nextInt((int) Math.pow(10, 2)) + 1; 68 b = new Random().nextInt((int) Math.pow(10, 2)) + 1; 69 if (b == 0) 70 b++; 71 System.out.println(a + "/" + " " + b + " " + "=?"); 72 Scanner y2 = new Scanner(System.in); 73 d = y2.nextDouble(); 74 if (d != (a / b) / 1.00) { 75 e++; 76 System.out.println("回答错误!!"); 77 } else { 78 r++; 79 System.out.println("回答正确!!"); 80 81 } 82 83 break; 84 85 } 86 } 87 System.out.println("考试结束!!"); 88 System.out.println("您一共做了:" + (r + e) + "道题目,其中正确的有" + r + "道,错误的有" + e + "道!"); 90 } 91 }
六、程序效果图:
七、PSP耗时:
总结:老师刚开始布置作业的时候还没有明白是怎么回事,后来在第二次上机课的时候,老师再次的说明我才理解题目的意思。之前学过的相关计算机课程大部分都忘记了,例如c语言程序中的switch控制语句的用法以及java中类的用法也不怎么记得了,在写程序的过程中还好及时的查阅课本和资料、寻求同学和老师帮助才算完成。其中的不足之处还希望老师指出,以后继续努力!