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
作者:冰稀饭Aurora
出处:https://www.cnblogs.com/rsy-bxf150/p/16757231.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端