四则运算4

代码还未完全实现,暂且发布以下内容:

  1 //
  2 //四则运算04
  3 
  4 import java.util.Scanner;
  5 public class Four_Operation_04 {
  6     
  7     static Scanner in=new Scanner(System.in);//定义in为输入
  8     
  9     public static void main(String[] args) {
 10         // TODO Auto-generated method stub
 11         
 12         System.out.print("请选择:
1.混合运算;
2.简单运算。
");
 13         int k=in.nextInt();                                //k:运算选择
 14         System.out.print("5.请输入打印数量:");
 15         int printNUM=in.nextInt();                         //printNUM:打印数量
 16         System.out.print("请选择:
计算范围:");
 17         int numF=in.nextInt();                             //numF:计算范围
 18         System.out.print("2.请选择是否有乘除法:
");
 19         System.out.print("(1):是            (2):否
");
 20         int ccYN=in.nextInt();                             //ccYN:是否有乘除法
 21         
 22         if(k==1)
 23         {
 24             operationComp(numF,ccYN);
 25         }
 26 
 27         if(k==2)
 28         {
 29             operationInt(numF,ccYN,printNUM);
 30         }
 31     }
 32     
 33     //简单运算
 34     public static void operationInt(int a1,int a2,int a4)
 35     {                               //计算范围   乘除法   打印数量
 36         int fir[]=new int[a4];//第一个数
 37         int mid[]=new int[a4]; //符号转化的中间变量
 38         char fh[]=new char[a4];//符号
 39         int sec[]=new int[a4];//第二个数
 40         
 41         int T;//控制重新生成随机数的变量
 42 
 43         for(int i=0;i<a4;i++)
 44         {
 45             T=0;
 46                 
 47             //随机产生
 48             fir[i]=(int)(Math.random()*a1);
 49             mid[i]=(int)(Math.random()*a1);
 50             if(a2==2)//没有乘除法
 51             {
 52                 mid[i]=mid[i]%2;
 53                 if(mid[i]==0)fh[i]='+';
 54                 if(mid[i]==1)fh[i]='-';
 55             }
 56             if(a2==1)//有乘除法
 57             {
 58                 mid[i]=mid[i]%4;
 59                 if(mid[i]==0)fh[i]='+';
 60                 if(mid[i]==1)fh[i]='-';
 61                 if(mid[i]==2)fh[i]='*';
 62                 if(mid[i]==3)fh[i]='/';
 63             }
 64             sec[i]=(int)(Math.random()*a1);
 65             
 66             //减法不能有负数
 67             if(fh[i]=='-')
 68             {
 69                 if(fir[i]-sec[i]<0)
 70                     T=1;
 71             }
 72             
 73             //是否重复
 74             for(int j=i-1;j>=0;j--)
 75             {
 76                 if(fh[i]==fh[j])
 77                 {
 78                     //判断数字有无相同
 79                     if(fir[i]==fir[j]&&sec[i]==sec[j])
 80                         T=1;
 81                     //加法与乘法前后数字也不能都相同
 82                     if(fh[i]=='+'||fh[i]=='/')
 83                     {
 84                         if(fir[i]==sec[j]&&sec[i]==fir[j])
 85                             T=1;
 86                     }    
 87                 }
 88             }
 89             if(T==1)i--;
 90         }
 91             
 92         //打印
 93         int R=0;
 94         for(int m=0;m<a4;m++)
 95         {
 96             System.out.print(fir[m]);
 97             System.out.print(fh[m]);
 98             System.out.print(sec[m]);
 99             System.out.print("=");
100             String r1=in.next();//用户输入答案
101             int r2=0;
102             String r3 = "";
103                 
104             if(fh[m]=='+')
105             {
106                 r2=fir[m]+sec[m];
107                 r3=Integer.toString(r2);
108             }
109             if(fh[m]=='-')
110             {
111                 r2=fir[m]-sec[m];
112                 r3=Integer.toString(r2);
113             }
114             if(fh[m]=='*')
115             {
116                 r2=fir[m]*sec[m];
117                 r3=Integer.toString(r2);
118             }
119             if(fh[m]=='/')
120             {
121                 if(fir[m]%sec[m]!=0)//除法运算有余数时,真分数输出
122                 {
123                     //判断能否化简
124                     for(int q=Math.min(fir[m],sec[m]);q>0;q--)
125                     {
126                         if(fir[m]%q==0&&sec[m]%q==0)
127                         {
128                             if(sec[m]/q==1)//当分母化简后等于1
129                                 r3=Integer.toString(fir[m]);
130                             else
131                                 r3=Integer.toString(fir[m]/q)+"/"+Integer.toString(sec[m]/q);
132                         }
133                     }
134                     
135                 }
136                 if(fir[m]%sec[m]==0)//除法运算没有余数时
137                 {
138                     r2=fir[m]/sec[m];
139                     r3=Integer.toString(r2);
140                 }
141             }
142             
143             //判断结果与客户输入是否相同
144             if(r1.equals(r3))
145             {
146                 R++;
147                 System.out.print("正确!继续加油!
	^-^
");
148             }
149             else
150             {
151                 System.out.print("错误!正确答案为:"+r3+"
");
152             }
153         }
154         System.out.print("正确题目个数:"+R+"个。");
155     }
156     //混合运算
157         public static void operationComp(int b1,int b2)
158         {                               //计算范围   乘除法   负数
159             int num[]=new int[5];       //混合运算的数字部分
160             char fuh[]=new char[4];     //混合运算的符号部分
161             int mid1;                   //符号中间转换变量
162             System.out.print("请输入混合运算复杂度:
");
163             int numope=in.nextInt();
164             int R=0;//统计计算正确题目个数
165             for(int k=0;k<5;k++)
166             {
167                 for(int j=0;j<4;j++)
168                 {
169                     mid1=(int)(Math.random()*100);
170                     if(b2==1)                        //有无乘除法
171                     {
172                         if(mid1%4==0)
173                             fuh[j]='+';
174                         if(mid1%4==1)
175                             fuh[j]='-';
176                         if(mid1%4==2)
177                             fuh[j]='*';
178                         if(mid1%4==3)
179                             fuh[j]='/';
180                     }
181                     if(b2==2)
182                     {
183                         if(mid1%2==0)
184                             fuh[j]='+';
185                         if(mid1%2==1)
186                             fuh[j]='-';
187                     }
188                 }
189                 for(int i=0;i<5;i++)
190                 {
191                     num[i]=(int)(Math.random()*b1);
192                     if(i>0)
193                     {
194                         if(fuh[i-1]=='/')
195                         {
196                             while(num[i]==0)
197                             {
198                                 num[i]=(int)(Math.random()*b1);//除号后不能有0
199                             }
200                             if(num[i-1]%num[i]!=0)
201                             {
202                                 i=i-2;
203                             }
204                         }
205                     }
206                 }
207                 
208                 //打印
209                 int N=0;
210                 for(int n=0;n<numope-1;n++)
211                 {
212                     System.out.print(num[n]);
213                     System.out.print(fuh[n]);                
214                     N++;
215                 }
216                 System.out.print(num[N]);
217                 System.out.print("=
");
218                 
219                 //计算        
220                 for(int js=0;js<numope-1;js++)
221                 {
222                     if(fuh[js]=='*'||fuh[js]=='/')
223                     {
224                         if(fuh[js]=='*')
225                             num[js+1]=num[js]*num[js+1];
226                         if(fuh[js]=='/')
227                             num[js+1]=num[js]/num[js+1];
228                         num[js]=0;
229                         if(js>0)
230                             fuh[js]=fuh[js-1];
231                         if(js==0)
232                             fuh[js]='+';
233 
234                     }
235                 }
236                 
237                 for(int js1=0;js1<numope-1;js1++)
238                 {
239                     if(fuh[js1]=='+')
240                         num[js1+1]=num[js1]+num[js1+1];
241                     if(fuh[js1]=='-')
242                         num[js1+1]=num[js1]-num[js1+1];
243                 }
244 
245                 int innum=in.nextInt();
246                 if(innum==num[numope-1])
247                     R++;
248             }
249             System.out.print("正确题目个数:"+R);    
250         }
251 }

原文地址:https://www.cnblogs.com/weiyao/p/5372346.html