Loading

9.30课堂测试

没有使用栈来完成,不够简约,仍需改进。但是实现了继承和基本要求

2年级类

  1 package arith;
  2 
  3 import java.util.ArrayList;
  4 import java.util.Scanner;
  5 import java.util.Random;
  6 
  7 public class Arithmetics {
  8 
  9 static int n1 = 30;
 10 static int n3;
 11 static double sumt=0;
 12 static double sum=0;
 13 ArrayList<Integer> Numbers = new ArrayList<>();
 14 ArrayList<String> Symbols = new ArrayList<>();
 15 ArrayList<Integer> Anwsers = new ArrayList<>();
 16 
 17 static ArrayList<Integer> rNumbers = new ArrayList<>();
 18 static ArrayList<String> rSymbols = new ArrayList<>();
 19 static ArrayList<Integer> rAnwsers = new ArrayList<>();
 20 //输入参数
 21 public void getargu() {
 22 
 23 int num1 = 30;
 24 int num3 = 0;
 25 
 26 Scanner sc = new Scanner(System.in);
 27 System.out.println("请输入出题个数:");
 28 num1 = sc.nextInt();
 29 
 30 System.out.println("请输入操作数范围最大值:");
 31 num3 = sc.nextInt();
 32 
 33 n1=num1;
 34 n3=argu(num3);
 35 
 36 }
 37 public int argu(int n3) {
 38 if(n3>100) {
 39 return 100;
 40 }
 41 else {
 42 return n3;
 43 }
 44 }
 45 //出题
 46 public void draw(int nu1,int nu3) {
 47 
 48 int s2 = 2;
 49 Random rand = new Random();
 50 Scanner sc = new Scanner(System.in);
 51 
 52 int []numbers = new int[s2];
 53 int []dsymbol = new int[s2-1];
 54 String []symbols = new String[s2-1];
 55 
 56 for(int i=0;i<nu1;i++) {
 57 for(int j=0;j<s2;j++){
 58 numbers[j] = rand.nextInt(nu3)+1;
 59 }
 60 
 61 for(int k=0;k<(s2-1);k++){
 62 dsymbol[k] = rand.nextInt(4);
 63 switch (dsymbol[k]) {
 64 case 0:
 65 symbols[k] = "+";
 66 break;
 67 case 1:
 68 symbols[k] = "-";
 69 break;
 70 case 2:
 71 symbols[k] = "*";
 72 break;
 73 case 3:
 74 symbols[k] = "/";
 75 break;
 76 }
 77 }
 78 for(int e=0,t1=0,t2=0;e<s2*2;e++){
 79 if(e%2==0){
 80 Numbers.add(numbers[t1]);
 81 t1++;
 82 }
 83 else if(e%2==1&&(e+1)%(s2*2)!=0){
 84 Symbols.add(symbols[t2]);
 85 if(symbols[t2]=="/") {
 86 numbers[t2+1]=primefactor(numbers[t2]);
 87 }
 88 t2++;
 89 }
 90 else if(e%2==1&&(e+1)%(s2*2)==0) {
 91 Symbols.add("=");
 92 }
 93 }
 94 int answer = 0;
 95 for(int e=0,t1=0,t2=0;e<s2;e++) {
 96 if(e==0){
 97 answer=answer+numbers[t1];
 98 t1++;
 99 }
100 else {
101 
102 switch (symbols[t2]) {
103 case "+":
104 answer=answer+numbers[t1];
105 break;
106 case "-":
107 answer=answer-numbers[t1];
108 break;
109 case "*":
110 answer=answer*numbers[t1];
111 break;
112 case "/":
113 answer=answer/numbers[t1];
114 break;
115 }
116 t2++;
117 }
118 
119 }
120 Anwsers.add(answer);
121 }
122 }
123 //判断正误
124 public boolean judge(int myanswer,int l){
125 
126 if(Anwsers.get(l)==myanswer) {
127 return true;
128 }
129 else {
130 return false;
131 }
132 }
133 //做题
134 public void problem() {
135 
136 Scanner sc = new Scanner(System.in);
137 int answer = 0;
138 int s2=2;
139 int s =0;
140 while(true) {
141 if(Symbols.get(s)=="=") {
142 s2=(s+1);
143 break;
144 }else {
145 s++;
146 }
147 }
148 for(int i=0;i<n1;i++) {
149 for(int j=0,t1=0,t2=0;j<100;j++) {
150 if(j%2==0) {
151 System.out.print(Numbers.get((i*s2)+t1));
152 t1++;
153 }
154 else if(j%2==1&&Symbols.get(t2)!="=") {
155 System.out.print(Symbols.get((i*s2)+t2));
156 t2++;
157 }
158 else if(j%2==1&&Symbols.get(t2)=="=") {
159 System.out.println(Symbols.get((i*s2)+t2));
160 t2++;
161 break;
162 }
163 }
164 answer = sc.nextInt();
165 if(judge(answer,i)) {
166 System.out.println("正确");
167 sumt++;
168 sum++;
169 }
170 else {
171 System.out.println("错误");
172 for(int e=0,t1=0,t2=0;e<s2*2;e++){
173 if(e%2==0){
174 rNumbers.add(Numbers.get((i*s2)+t1));
175 t1++;
176 }
177 else if(e%2==1){
178 rSymbols.add(Symbols.get((i*s2)+t2));
179 t2++;
180 }
181 }
182 rAnwsers.add(Anwsers.get(i));
183 sum++;
184 }
185 }
186 
187 }
188 //错题集
189 public void wrongproblem() {
190 System.out.println("复习错题输入1");
191 System.out.println("查询正确率输入2");
192 Scanner sc = new Scanner(System.in);
193 int x1 = sc.nextInt();
194 if(x1==1) {
195 remake();
196 }else {
197 double rate;
198 rate = sumt/sum;
199 System.out.println(rate);
200 }
201 }
202 //重做
203 public void remake() {
204 Scanner sc = new Scanner(System.in);
205 int answer = 0;
206 int s2=2;
207 int s =0;
208 while(true) {
209 if(rSymbols.get(s)=="=") {
210 s2=(s+1);
211 break;
212 }else {
213 s++;
214 }
215 }
216 for(int i=0;i<n1;i++) {
217 for(int j=0,t1=0,t2=0;j<100;j++) {
218 if(j%2==0) {
219 System.out.print(rNumbers.get((i*s2)+t1));
220 t1++;
221 }
222 else if(j%2==1&&rSymbols.get(t2)!="=") {
223 System.out.print(rSymbols.get((i*s2)+t2));
224 t2++;
225 }
226 else if(j%2==1&&rSymbols.get(t2)=="=") {
227 System.out.println(rSymbols.get((i*s2)+t2));
228 t2++;
229 break;
230 }
231 }
232 answer = sc.nextInt();
233 if(judge(answer,i)) {
234 System.out.println("正确");
235 }
236 else {
237 System.out.println("错误");
238 }
239 }
240 }
241 //解决必须整除问题
242 public int primefactor(int n){
243 int m = 0;
244 if(n<1){
245 m= -1;
246 }
247 else if(n==1){
248 m= 1;
249 }
250 else {
251 while(n>1){
252 for(int i=2;i<=n;i++){
253 if (n==i){
254 m=n;
255 }
256 if(n%i==0){
257 n=n/i;
258 break;
259 }
260 }
261 }
262 }
263 return m;
264 }
265 }

/code by aurora

3年级类,继承2年级

 1 package arith;
 2 
 3 import java.util.Random;
 4 import java.util.Scanner;
 5 
 6 public class Arithmetics3 extends Arithmetics{
 7 
 8 public int argu(int n3) {
 9 if(n3>1000) {
10 return 1000;
11 }
12 else {
13 return n3;
14 }
15 }
16 public void draw(int nu1,int nu3) {
17 
18 int s2 = 4;
19 Random rand = new Random();
20 Scanner sc = new Scanner(System.in);
21 
22 int []numbers = new int[s2];
23 int []dsymbol = new int[s2-1];
24 String []symbols = new String[s2-1];
25 
26 for(int i=0;i<nu1;i++) {
27 for(int j=0;j<s2;j++){
28 numbers[j] = rand.nextInt(nu3)+1;
29 }
30 
31 for(int k=0;k<(s2-1);k++){
32 dsymbol[k] = rand.nextInt(4);
33 switch (dsymbol[k]) {
34 case 0:
35 symbols[k] = "+";
36 break;
37 case 1:
38 symbols[k] = "-";
39 break;
40 case 2:
41 symbols[k] = "*";
42 break;
43 case 3:
44 symbols[k] = "/";
45 break;
46 }
47 }
48 for(int e=0,t1=0,t2=0;e<s2*2;e++){
49 if(e%2==0){
50 Numbers.add(numbers[t1]);
51 t1++;
52 }
53 else if(e%2==1&&(e+1)%(s2*2)!=0){
54 Symbols.add(symbols[t2]);
55 if(symbols[t2]=="/") {
56 numbers[t2+1]=primefactor(numbers[t2]);
57 }
58 t2++;
59 }
60 else if(e%2==1&&(e+1)%(s2*2)==0) {
61 Symbols.add("=");
62 }
63 }
64 int answer = 0;
65 for(int e=0,t1=0,t2=0;e<s2;e++) {
66 if(e==0){
67 answer=answer+numbers[t1];
68 t1++;
69 }
70 else {
71 
72 switch (symbols[t2]) {
73 case "+":
74 answer=answer+numbers[t1];
75 break;
76 case "-":
77 answer=answer-numbers[t1];
78 break;
79 case "*":
80 answer=answer*numbers[t1];
81 break;
82 case "/":
83 answer=answer/numbers[t1];
84 break;
85 }
86 t2++;
87 }
88 
89 }
90 Anwsers.add(answer);
91 }
92 }
93 
94 }

 

4年级类,继承3年级

 1 package arith;
 2 
 3 import java.util.Random;
 4 import java.util.Scanner;
 5 
 6 public class Arithmetics4 extends Arithmetics3{
 7 
 8 public int argu(int n3) {
 9 return n3;
10 }
11 public void draw(int nu1,int nu3) {
12 
13 int s2 = 5;
14 Random rand = new Random();
15 Scanner sc = new Scanner(System.in);
16 
17 int []numbers = new int[s2];
18 int []dsymbol = new int[s2-1];
19 String []symbols = new String[s2-1];
20 
21 for(int i=0;i<nu1;i++) {
22 for(int j=0;j<s2;j++){
23 numbers[j] = rand.nextInt(nu3)+1;
24 }
25 
26 for(int k=0;k<(s2-1);k++){
27 dsymbol[k] = rand.nextInt(4);
28 switch (dsymbol[k]) {
29 case 0:
30 symbols[k] = "+";
31 break;
32 case 1:
33 symbols[k] = "-";
34 break;
35 case 2:
36 symbols[k] = "*";
37 break;
38 case 3:
39 symbols[k] = "/";
40 break;
41 }
42 }
43 for(int e=0,t1=0,t2=0;e<s2*2;e++){
44 if(e%2==0){
45 Numbers.add(numbers[t1]);
46 t1++;
47 }
48 else if(e%2==1&&(e+1)%(s2*2)!=0){
49 Symbols.add(symbols[t2]);
50 if(symbols[t2]=="/") {
51 numbers[t2+1]=primefactor(numbers[t2]);
52 }
53 t2++;
54 }
55 else if(e%2==1&&(e+1)%(s2*2)==0) {
56 Symbols.add("=");
57 }
58 }
59 int answer = 0;
60 for(int e=0,t1=0,t2=0;e<s2;e++) {
61 if(e==0){
62 answer=answer+numbers[t1];
63 t1++;
64 }
65 else {
66 
67 switch (symbols[t2]) {
68 case "+":
69 answer=answer+numbers[t1];
70 break;
71 case "-":
72 answer=answer-numbers[t1];
73 break;
74 case "*":
75 answer=answer*numbers[t1];
76 break;
77 case "/":
78 answer=answer/numbers[t1];
79 break;
80 }
81 t2++;
82 }
83 
84 }
85 Anwsers.add(answer);
86 }
87 }
88 
89 }

 

主函数

 1 /*Design by AuroraRSY*/
 2 package arith;
 3 
 4 import java.util.Scanner;
 5 
 6 public class Test1 {
 7 
 8 public static void main(String[] args) {
 9 
10 Arithmetics ari2 = new Arithmetics();
11 Arithmetics ari3 = new Arithmetics3();
12 Arithmetics ari4 = new Arithmetics4();
13 
14 for(int i=0;i!=1;) {
15 System.out.println("**************");
16 System.out.println(" 0. 终止 ");
17 System.out.println(" 1. 参数设置 ");
18 System.out.println("**************");
19 System.out.println(" 2.小学二年级口算题");
20 System.out.println(" 3.小学三年级口算题");
21 System.out.println(" 4.小学四年级口算题");
22 System.out.println(" 5. 错题集 ");
23 System.out.println("**************");
24 System.out.println("**输入1-5来选择**");
25 Scanner sc = new Scanner(System.in);
26 int a1 = sc.nextInt();
27 switch (a1) {
28 case 0:
29 i=1;
30 break;
31 case 1:
32 ari2.getargu();
33 break;
34 case 2:
35 ari2.draw(Arithmetics.n1,Arithmetics.n3);
36 ari2.problem();
37 break;
38 case 3:
39 ari3.draw(Arithmetics.n1,Arithmetics.n3);
40 ari3.problem();
41 break;
42 case 4:
43 ari4.draw(Arithmetics.n1,Arithmetics.n3);
44 ari4.problem();
45 break;
46 case 5:
47 ari2.wrongproblem();
48 break;
49 }
50 }
51 
52 }
53 
54 }
55 
56  
posted @ 2022-10-06 11:09  冰稀饭Aurora  阅读(15)  评论(0编辑  收藏  举报