四则运算2之小学二年级

一、解题思路
1、定义一个加法运算函数“add()”和加减乘除运算函数“mul”;利用选择语句用户可以 根据需求选择四则运算的类型和实现参数控制。
2、使用随机函数Random()产生运算数及运算符,在while()循环里用户可以定义生成算术题 的个数,将产生的运算数及运算符放入定义好的二维数组内,利用if...else...和循环 语句将生成的新的算式与数组中存入的逐一比较,避免算术题重复。
3、通过switch语句和if((i+1%m2)==0)语句实现控制打印方式的选择。


二、源代码

  1 package szys;
  2 import java.util.Scanner;
  3 import java.util.Random;
  4 public class szys2 
  5 {
  6 
  7     public static void main(String[] args) 
  8     {
  9         // TODO 自动生成的方法存根
 10         System.out.println("********四则运算*********");
 11         System.out.println("******1.加减运算*********");
 12         System.out.println("******2.加减乘除运算******");
 13         System.out.println("**************************");
 14         Scanner n=new Scanner(System.in);
 15         System.out.print("请输入运算选项:  ");
 16         int n1=n.nextInt();
 17         switch(n1)
 18         {
 19             case 1:add();
 20                 break;
 21             case 2:mul();
 22                 break;
 23         }
 24     }
 25     
 26     public static void add()
 27     {              //加减法
 28         System.out.println("******加法运算******");
 29         int i;
 30         char[] ch={'+','-',};//字符数组
 31         int a[][]=new int[10000][3];
 32         Random r=new Random();
 33         Scanner s=new Scanner(System.in);
 34         System.out.print("请输入算术题的个数:  ");
 35         int m1=s.nextInt();
 36         System.out.print("请输入每行打印的个数:  ");
 37         int m2=s.nextInt();
 38         System.out.print("加减是否有负数(1/0):");
 39         int c1=s.nextInt();
 40         if(c1==1)
 41         {
 42             System.out.println("请选测数值范围:");
 43             int a1=s.nextInt();
 44             int a2=s.nextInt();
 45             
 46             int count=0;
 47             System.out.println("******算数如下******");
 48             while(count<m1)
 49             {
 50                 boolean m=true;
 51                 int s1=(r.nextInt(a2-a1+1)+a1);
 52                 int s2=(r.nextInt(a2-a1+1)+a1);
 53                 int s3=(r.nextInt(ch.length));
 54                 for(i=0;i<=count;i++)
 55                 {
 56                     if(a[i][0]==s1&&a[i][1]==s2&&a[i][2]==s3)
 57                     {
 58                         m=false;
 59                     }
 60                 }
 61                 if(m=true)
 62                 {
 63                     a[count][0]=s1;
 64                     a[count][1]=s2;
 65                     a[count][2]=s3;
 66                 }
 67                 else
 68                 {
 69                     count--;
 70                 }
 71                 count++;
 72             }
 73             //System.out.println("******算数如下******");
 74            for(i=0;i<m1;i++)
 75              {
 76                  switch(a[i][2])
 77                  {
 78                  case 0:{System.out.print(a[i][0]+"+"+a[i][1]+"="+"   ");
 79                  break;}
 80                  case 1:{System.out.print(a[i][0]+"-"+a[i][1]+"="+"   ");
 81                  break;
 82                                  }
 83                  }
 84                  if((i+1)%m2==0)
 85                  {
 86                      System.out.println();
 87                  }
 88              }
 89 
 90         }
 91         else
 92         {
 93             System.out.println("请选测数值范围:");
 94             int a1=s.nextInt();
 95             int a2=s.nextInt();
 96             int count=0;
 97             while(count<m1)
 98             {
 99                 boolean m=true;
100                 int s1=(r.nextInt(a2-a1+1)+a1);
101                 int s2=(r.nextInt(a2-a1+1)+a1);
102                 int s3=(r.nextInt(ch.length));
103                 for(i=0;i<=count;i++)
104                 {
105                     if(a[i][0]==s1&&a[i][1]==s2&&a[i][2]==s3)
106                     {
107                         m=false;
108                     }
109                 }
110                 if(m=true)
111                 {
112                     a[count][0]=s1;
113                     a[count][1]=s2;
114                     a[count][2]=s3;
115                 }
116                 else
117                 {
118                     count--;
119                 }
120                 count++;
121             }
122             for(i=0;i<m1;i++)
123              {
124                  switch(a[i][2])
125                  {
126                  case 0:{System.out.print(a[i][0]+"+"+a[i][1]+"="+"   ");
127                  break;}
128                  case 1:{System.out.print(a[i][0]+"-"+a[i][1]+"="+"   ");
129                  break;}
130                  }
131                  if((i+1)%m2==0)
132                  {
133                      System.out.println();
134                  }
135 
136              }
137         }
138     }
139     
140     public static void mul()
141     {              //乘除法
142         System.out.println("******乘除法运算******");
143         int i;
144         Random r=new Random();
145         Scanner s=new Scanner(System.in);
146         System.out.print("请输入算术题的个数:  ");
147         int m1=s.nextInt();
148         System.out.print("请输入每行打印的个数:  ");
149         int m3=s.nextInt();
150         System.out.print("加减是否有负数(0/1):");
151         int c2=s.nextInt();
152         if(c2==1)
153         {
154             System.out.println("请选测数值范围:");
155             int a1=s.nextInt();
156             int a2=s.nextInt();
157             char[] ch={'+','-','*','/'};//字符数组
158             int a[][]=new int[100][3];
159             int count=0;
160             while(count<m1)
161             {
162                 boolean m=true;
163                 int s1=(r.nextInt(a2-a1+1)+a1);
164                 int s2=(r.nextInt(a2-a1+1)+a1);
165                 int s3=(r.nextInt(ch.length));
166                 for(i=0;i<=count;i++)
167                 {
168                     if(a[i][0]==s1&&a[i][1]==s2&&a[i][2]==s3)
169                     {
170                         m=false;
171                     }
172                 }
173                 if(m=true)
174                 {
175                     a[count][0]=s1;
176                     a[count][1]=s2;
177                     a[count][2]=s3;
178                 }
179                 else
180                 {
181                     count--;
182                 }
183                 count++;
184             }
185             for(i=0;i<m1;i++)
186              {
187                  switch(a[i][2])
188                  {
189                  case 0:{System.out.print(a[i][0]+"+"+a[i][2]+"="+"   ");
190                      break;}
191                  case 1:{System.out.print(a[i][0]+"-"+a[i][2]+"="+"   ");
192                  break;}
193                  case 2:{System.out.print(a[i][0]+"*"+a[i][2]+"="+"   ");
194                  break;}
195                  case 3:{System.out.print(a[i][0]+"/"+a[i][2]+"="+"   ");
196                  break;}
197                  }
198                  if((i+1)%m3==0)
199                  {
200                      System.out.println();
201                  }
202              }
203 
204         }
205         else
206         {
207             System.out.println("请选测数值范围:");
208             int a1=s.nextInt();
209             int a2=s.nextInt();
210             char[] ch={'+','-','*','/'};//字符数组
211             int a[][]=new int[10000][3];
212             int count=0;
213             while(count<m1)
214             {
215                 boolean m=true;
216                 int s1=(r.nextInt(a2-a1+1)+a1);
217                 int s2=(r.nextInt(a2-a1+1)+a1);
218                 int s3=(r.nextInt(ch.length));
219                 for(i=0;i<=count;i++)
220                 {
221                     if(a[i][0]==s1&&a[i][1]==s2&&a[i][2]==s3)
222                     {
223                         m=false;
224                     }
225                 }
226                 if(m=true)
227                 {
228                     a[count][0]=s1;
229                     a[count][1]=s2;
230                     a[count][2]=s3;
231                 }
232                 else
233                 {
234                     count--;
235                 }
236                 count++;
237             }
238             for(i=0;i<m1;i++)
239              {
240                  switch(a[i][2])
241                  {
242                  case 0:{System.out.print(a[i][0]+"+"+a[i][2]+"="+"   ");
243                  break;}
244                  case 1:{System.out.print(a[i][0]+"-"+a[i][2]+"="+"   ");
245                  break;}
246                  case 2:{System.out.print(a[i][0]+"*"+a[i][2]+"="+"   ");
247                  break;}
248                  case 3:{System.out.print(a[i][0]+"/"+a[i][2]+"="+"   ");
249                  break;}
250                  }
251                  if((i+1)%m3==0)
252                  {
253                      System.out.println();
254                  }
255              }
256         }
257     }
258 }

 

 

三、运行结果

四、反思总结
1、在编写过程中,对于题目避免重复的要求,设想了多种方法实现,最终采用了存入 数组逐一比较的方法实现,思考过程用了很长时间。说明平时锻炼比较少,对于循 环、算法的使用还不够熟悉,以后在这方面应该多加练习。
2、编程中出现了一些小错误,分号使用、单引号和双引号的区别混淆,说明对于Java 这门语言还不够熟悉,需要多看多练。

五、日志记录

 

posted @ 2015-03-15 12:09  yuji-5656  阅读(302)  评论(0编辑  收藏  举报