二柱子代码版

今天对二柱子进行了升级,可以设置参数,选择难度

  1 package random;
  2 
  3 
  4 import java.util.*;
  5 import javax.script.*;
  6 
  7 public class Quesfa {
  8 
  9     static char[] fu = {'+','-','*','/'};//符号
 10     static String[] ti = new String[100];//
 11     static String[] daan = new String[100];
 12     static String[] cuoti = new String[100];//错题
 13     static String[] cuotidaan = new String[100];//错题答案
 14     static int tishu = 30;//题数
 15     static int caozuoshu = 2;//操作数
 16     static int fanwei = 100;//范围
 17     static int cuotishu = 0;//错题数
 18 
 19     public static void choose()
 20     {
 21         Scanner s = new Scanner(System.in);
 22         
 23         System.out.println("1. 参数设置");
 24         System.out.println("2. 小学二年级口算题");
 25         System.out.println("3. 小学三年级口算题");
 26         System.out.println("4. 小学四年级口算题");
 27         System.out.println("5. 错题集");
 28         
 29         int x = s.nextInt();
 30         while(x!=0) {
 31         
 32         switch (x) {
 33         
 34         case 1:
 35             canshu();
 36             break;
 37         case 2:
 38             chuti(tishu, 2, fanwei);
 39             suandaan();
 40             zuoti();
 41             break;
 42         case 3:
 43             chuti(tishu, 4, fanwei);
 44             suandaan();
 45             zuoti();
 46             break;
 47         case 4:
 48             chuti(tishu, 5, fanwei);
 49             suandaan();
 50             zuoti();
 51             break;
 52         case 5:
 53             cuotiji();
 54             break;
 55             
 56         default:System.out.println("请输入1-5");
 57             break;
 58         }
 59         System.out.println("1. 参数设置");
 60         System.out.println("2. 小学二年级口算题");
 61         System.out.println("3. 小学三年级口算题");
 62         System.out.println("4. 小学四年级口算题");
 63         System.out.println("5. 错题集");
 64         x = s.nextInt();
 65         }
 66         
 67     }
 68     
 69     //参数
 70     public static void canshu()
 71     {
 72         Scanner c = new Scanner(System.in);
 73         System.out.print("题数:");
 74         tishu=c.nextInt();
 75         
 76         //System.out.print("操作数:");
 77         //caozuoshu=c.nextInt();
 78         
 79         System.out.print("范围:");
 80         fanwei=c.nextInt();
 81         System.out.println("参数设置完成");
 82     }
 83     
 84     //出题
 85     public static void chuti(int tishu,int caozuoshu,int fanwei)
 86     {
 87         int a=0;
 88         int c=0;
 89         int d=0;
 90         int e=0;
 91         Random r=new Random();
 92         for(int i=0;i<tishu;i++)
 93         {
 94             StringBuilder b = new StringBuilder();
 95             if(caozuoshu==2)
 96             {
 97                 d=r.nextInt(4);
 98                 if(d==3)
 99                 {
100                     while(true)
101                     {
102                         e=r.nextInt(fanwei+1);
103                         c=r.nextInt(fanwei+1);
104                         a=c*e;
105                         if(a<=fanwei&&c!=0)
106                             break;
107                     }
108                 }
109                 else {
110                     a=r.nextInt(fanwei+1);
111                     d=r.nextInt(3);
112                     c=r.nextInt(fanwei+1);
113                 }
114                 b.append(a);
115                 b.append(fu[d]);
116                 b.append(c);
117             }
118             else {
119                 for(int j=1;j<=2*caozuoshu-1;j+=2)
120                 {
121                     a=r.nextInt(fanwei+1);
122                     b.append(a);
123                     if(j!=2*caozuoshu-1) {
124                         b.append(fu[r.nextInt(3)]);
125                     }
126                 }
127             }
128             
129             ti[i]= b.toString();
130         }
131         
132     }
133     
134     //查重
135     public static boolean same()
136     {
137         for(int i=0;i<tishu;i++) {
138             for(int j=i+1;j<tishu;j++) {
139                 if(ti[i].equals(ti[j]))
140                 {
141                     //System.out.println("有重复");
142                     return true;
143                 }
144             }
145         }
146         //System.out.println("无重复");
147         return false;
148     }
149     
150     //算答案
151     public static void suandaan()
152     {
153         ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
154         ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("nashorn");
155         
156         for(int i=0;i<tishu;i++) {
157             try {
158                 String result = String.valueOf(scriptEngine.eval(ti[i]));
159                 //System.out.println(result);
160                 daan[i]=result;
161             } catch (ScriptException e) {
162                 e.printStackTrace();
163             }
164         }
165         
166     }
167     
168     
169     //做题
170     public static void zuoti() {
171         Scanner indaan = new Scanner(System.in);
172         String an="";
173         
174         for(int i=0;i<tishu;i++)//去重打印
175         {
176             if(!same()) {
177                 System.out.print(i+1+".\t"+ti[i]+"=");
178                 an=indaan.next();
179                 if (an.equals(daan[i])) {
180                     System.out.println("√");
181                 }
182                 else {
183                     System.out.println("×");
184                     cuoti[cuotishu]=ti[i];
185                     cuotidaan[cuotishu]=daan[i];
186                     cuotishu++;
187                 }
188             }
189             else {
190                 i--;
191             }
192         }
193         System.out.println("错题数:"+cuotishu+"   正确率:"+(double)(tishu-cuotishu)*100/tishu+"%");
194     }
195     
196     //错题集
197     public static void cuotiji()
198     {
199         Scanner indaan = new Scanner(System.in);
200         String an="";
201         System.out.println("错题集:");
202         int temp=0;
203         for(int i=0;i<cuotishu;i++)
204         {
205                 System.out.println(i+1+".\t"+cuoti[i]+"=");
206                 an=indaan.next();
207                 
208                 if (an.equals(cuotidaan[i])) {
209                     System.out.println("√");
210                 }
211                 else {
212                     System.out.println("×");
213                     cuoti[temp]=cuoti[i];
214                     cuotidaan[temp]=cuotidaan[i];
215                     temp++;
216                 }
217         }
218         cuotishu = temp;
219         if(cuotishu==0)
220             System.out.println("没错题了");
221             
222         }
223     
224     public static void main(String[] args) {
225         choose();
226      }
227 
228 }

接下来要去学习web版了

.......

posted @ 2020-10-14 21:56  学习中_1  阅读(163)  评论(0编辑  收藏  举报