一、这次是两人合作做的作业,小伙伴的名字及博客地址是:江丹仪,http://www.cnblogs.com/JDY64/

 二、我们一共用了一天左右的时间去编写这个程序

 三、运行环境:Eclipse

 四、我们做的4个方向有:

1.程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3;(还未完成,待定)

2.用户答题结束以后,程序可以显示用户答题所用的时间;(还未完成,待定)

3.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数;

4.程序可以设置皮肤功能,可以改变界面的颜色即可。

五、分工合作:我做了界面窗体,小伙伴做了算法以及对多个符号运行的情况。

六、我们遇到的问题主要是:

1.一开始的运算符打印不出,后来经过同学帮助,才知道要将其转换成String字符型;

2.还有在生成多个运算符号的时候,只会用最笨的方法来解决,至今没找到更为方便的方法,但我想这是我们比较创新的想法;

3.在验证正确答案时因为运算符是随机产生,一开始也不知如何进行,后来用if解决了;

4.按钮事件的监听里面不能使用for循环,试了很多次都执行不了,也不知道问题出在哪里,后来就去掉了for循环直接用if语句;

 

 

 七、代码如下: 

  1 import java.awt.Dimension;
  2 import java.awt.Toolkit;
  3 import java.awt.event.ActionEvent;
  4 import java.awt.event.ActionListener;
  5 import java.util.Random;
  6 import java.util.Scanner;
  7 import javax.swing.JButton;
  8 import javax.swing.JFrame;
  9 import javax.swing.JLabel;
 10 import javax.swing.JOptionPane;
 11 import javax.swing.JPanel;
 12 import javax.swing.JTextField;
 13 import java.awt.Color;
 14 public class yun {
 15     public static void main(String[] args) {
 16         new Calculator();
 17     }
 18 }
 19 
 20 class Calculator extends JFrame{
 21     private JLabel L1,L2,L3,L4;
 22     //private JLabel L5;
 23     private JTextField T1,T2,T3,T4,T5;
 24     private JButton B1,B2,B3;//按钮
 25     int a,b,c,d,h;
 26     char fh2,fh3,fh4;
 27     char[]fh={'+','-','*','/'};
 28     Scanner in=new Scanner(System.in);
 29     int ranswer,answer;//正确答案和用户输入答案
 30     int num,fhnum;//出题数和符号数
 31     int wrong=0,right=0;//对错题数
 32     int score=0;
 33     int sum=0;
 34     
 35     public Calculator(){
 36         this("四则运算");
 37     }
 38     
 39     public Calculator(String title){
 40         super(title);//设置窗体标题
 41         setSize(510,150);//设置窗体大小
 42         //屏幕居中显示
 43         Dimension size=Toolkit.getDefaultToolkit().getScreenSize();//获得屏幕的标尺
 44         int screenWidth=size.width;
 45         int screenHeight=size.height;
 46         int x=(screenWidth-this.getWidth())/2;
 47         int y=(screenHeight-this.getHeight())/2;
 48         this.setLocation(x, y);
 49         //设置关闭按钮操作
 50         this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 51         setResizable(false);//设置窗体大小不可改变
 52         this.setVisible(true);//设置窗体可见
 53         
 54         //创建界面元素
 55         L1=new JLabel("选择所需的题目数(1-5):");
 56         T1=new JTextField(10);   //放题目个数
 57         L2=new JLabel("运算符的个数:");
 58         T2=new JTextField(10);   //放运算符个数
 59         B1=new JButton("开始");
 60         L3=new JLabel("四则运算式:");
 61         T3=new JTextField(10);  //设置运算式
 62         L4=new JLabel("输入答案:");
 63         T4=new JTextField(10);  //获取用户输入答案
 64         B2=new JButton("下一题");
 65         T5=new JTextField(10);//获取正确答案
 66         B3=new JButton("确定");
 67         //L5=new JLabel("计时");
 68         
 69         
 70         //创建面板
 71         JPanel p2=new JPanel();
 72         JPanel p1=new JPanel();
 73         p2.add(L1);
 74         p2.add(T1);
 75         p2.add(L2);
 76         p2.add(T2);
 77         p2.add(L3);
 78         p2.add(T3);
 79         p2.add(L4);
 80         p2.add(T4);
 81        // p2.add(L5);
 82         p1.add(B1);
 83         p1.add(B2);
 84         p1.add(B3);
 85         add(p2,"Center");
 86         add(p1,"South");
 87         
 88       //设置窗体界面颜色
 89         p1.setBackground(Color.gray);
 90         p2.setBackground(Color.gray);
 91         
 92         B1.addActionListener(new ActionListener(){
 93             public void actionPerformed(ActionEvent e) {
 94                 num=Integer.parseInt(T1.getText());
 95                 fhnum=Integer.parseInt(T2.getText());
 96                 sum++;
 97                 a=new Random().nextInt(100);
 98                 b=new Random().nextInt(100);
 99                 c=new Random().nextInt(100);
100                 d=new Random().nextInt(100);
101                 h=new Random().nextInt(4);
102                 fh2=fh[h];
103                 fh3=fh[h];
104                 fh4=fh[h];
105                 if(num>5)
106                 {
107                     JOptionPane.showMessageDialog(null, "输入有误,请重新输入!");
108                     
109                 }
110                 if(num<=5){
111                     
112                 
113                 
114                 if(fhnum==1)//一个运算符
115                 {
116                 T3.setText(a+String.valueOf(fh2)+b+"=");    
117                 if(fh2=='+'){
118                     ranswer=a+b;
119                 }
120                 if(fh2=='-'){
121                     ranswer=a-b;
122                 }
123                 
124                 if(fh2=='*'){
125                     ranswer=a*b;
126                 }
127                 if(fh2=='/'){
128                     ranswer=a/b;
129                 }
130                 }
131             
132             
133             
134                 if(fhnum==2)//两个运算符
135                 {
136                 T3.setText(a+String.valueOf(fh2)+b+String.valueOf(fh3)+c+"=");
137                 if(fh2=='+')
138                 {
139                 if(fh3=='+'){
140                     ranswer=a+b+c;
141                 }
142                 if(fh3=='-'){
143                     ranswer=a+b-c;
144                 }
145                 
146                 if(fh3=='*'){
147                     ranswer=a+b*c;
148                 }
149                 if(fh3=='/'){
150                     ranswer=a+b/c;
151                 }
152             }
153                 if(fh2=='-')
154                 {
155                 if(fh3=='+'){
156                     ranswer=a-b+c;
157                 }
158                 if(fh3=='-'){
159                     ranswer=a-b-c;
160                 }
161                 
162                 if(fh3=='*'){
163                     ranswer=a-b*c;
164                 }
165                 if(fh3=='/'){
166                     ranswer=a-b/c;
167                 }        
168             }
169             
170             if(fh2=='*')
171             {
172                 if(fh3=='+'){
173                     ranswer=a*b+c;
174                 }
175                 if(fh3=='-'){
176                     ranswer=a*b-c;
177                 }
178                 
179                 if(fh3=='*'){
180                     ranswer=a*b*c;
181                 }
182                 if(fh3=='/'){
183                     ranswer=a*b/c;
184                 }
185             }
186             if(fh2=='/')
187             {
188                 if(fh3=='+'){
189                     ranswer=a/b+c;
190                 }
191                 if(fh3=='-'){
192                     ranswer=a/b-c;
193                 }
194                 
195                 if(fh3=='*'){
196                     ranswer=a/b*c;
197                 }
198                 if(fh3=='/'){
199                     ranswer=a-b/c;
200                 }
201             }
202                 }
203                 
204                 if(fhnum==3)//三个运算符
205                 {
206                 T3.setText(a+String.valueOf(fh2)+b+String.valueOf(fh3)+c+String.valueOf(fh3)+d+"=");
207                 if(fh2=='+')//第一为加
208                     {
209                         if(fh3=='+')
210                         {
211                             if(fh4=='+')
212                             {ranswer=a+b+c+d;}
213                             if(fh4=='-')
214                             {ranswer=a+b+c-d;}
215                             if(fh4=='*')
216                             {ranswer=a+b+c*d;}
217                             if(fh4=='/')
218                             {ranswer=a+b+c/d;}
219                             
220                         }
221                         if(fh3=='-')
222                         {
223                             if(fh4=='+')
224                             {ranswer=a+b-c+d;}
225                             if(fh4=='-')
226                             {ranswer=a+b-c-d;}
227                             if(fh4=='*')
228                             {ranswer=a+b-c*d;}
229                             if(fh4=='/')
230                             {ranswer=a+b-c/d;}
231                             
232                         }
233                         if(fh3=='*')
234                         {
235                             if(fh4=='+')
236                             {ranswer=a+b*c+d;}
237                             if(fh4=='-')
238                             {ranswer=a+b*c-d;}
239                             if(fh4=='*')
240                             {ranswer=a+b*c*d;}
241                             if(fh4=='/')
242                             {ranswer=a+b*c/d;}
243                             
244                         }
245                         if(fh3=='/')
246                         {
247                             if(fh4=='+')
248                             {ranswer=a+b/c+d;}
249                             if(fh4=='-')
250                             {ranswer=a+b/c-d;}
251                             if(fh4=='*')
252                             {ranswer=a+b/c*d;}
253                             if(fh4=='/')
254                             {ranswer=a+b/c/d;}
255                             
256                         }
257                     }
258                     
259                     
260                     if(fh2=='-')//第一为减
261                     {
262                         if(fh3=='+')
263                         {
264                             if(fh4=='+')
265                             {ranswer=a-b+c+d;}
266                             if(fh4=='-')
267                             {ranswer=a-b+c-d;}
268                             if(fh4=='*')
269                             {ranswer=a-b+c*d;}
270                             if(fh4=='/')
271                             {ranswer=a-b+c/d;}
272                             
273                         }
274                         if(fh3=='-')
275                         {
276                             if(fh4=='+')
277                             {ranswer=a-b-c+d;}
278                             if(fh4=='-')
279                             {ranswer=a-b-c-d;}
280                             if(fh4=='*')
281                             {ranswer=a-b-c*d;}
282                             if(fh4=='/')
283                             {ranswer=a-b-c/d;}
284                             
285                         }
286                         if(fh3=='*')
287                         {
288                             if(fh4=='+')
289                             {ranswer=a-b*c+d;}
290                             if(fh4=='-')
291                             {ranswer=a-b*c-d;}
292                             if(fh4=='*')
293                             {ranswer=a-b*c*d;}
294                             if(fh4=='/')
295                             {ranswer=a-b*c/d;}
296                             
297                         }
298                         if(fh3=='/')
299                         {
300                             if(fh4=='+')
301                             {ranswer=a-b/c+d;}
302                             if(fh4=='-')
303                             {ranswer=a-b/c-d;}
304                             if(fh4=='*')
305                             {ranswer=a-b/c*d;}
306                             if(fh4=='/')
307                             {ranswer=a-b/c/d;}
308                             
309                         }
310                     }
311                     if(fh2=='*')//第一为乘
312                     {
313                         if(fh3=='+')
314                         {
315                             if(fh4=='+')
316                             {ranswer=a*b+c+d;}
317                             if(fh4=='-')
318                             {ranswer=a*b+c-d;}
319                             if(fh4=='*')
320                             {ranswer=a*b+c*d;}
321                             if(fh4=='/')
322                             {ranswer=a*b+c/d;}
323                             
324                         }
325                         if(fh3=='-')
326                         {
327                             if(fh4=='+')
328                             {ranswer=a*b-c+d;}
329                             if(fh4=='-')
330                             {ranswer=a*b-c-d;}
331                             if(fh4=='*')
332                             {ranswer=a*b-c*d;}
333                             if(fh4=='/')
334                             {ranswer=a*b-c/d;}
335                             
336                         }
337                         if(fh3=='*')
338                         {
339                             if(fh4=='+')
340                             {ranswer=a*b*c+d;}
341                             if(fh4=='-')
342                             {ranswer=a*b*c-d;}
343                             if(fh4=='*')
344                             {ranswer=a*b*c*d;}
345                             if(fh4=='/')
346                             {ranswer=a*b*c/d;}
347                             
348                         }
349                         if(fh3=='/')
350                         {
351                             if(fh4=='+')
352                             {ranswer=a*b/c+d;}
353                             if(fh4=='-')
354                             {ranswer=a*b/c-d;}
355                             if(fh4=='*')
356                             {ranswer=a*b/c*d;}
357                             if(fh4=='/')
358                             {ranswer=a*b/c/d;}
359                             
360                         }
361                     }
362                 }
363             }
364             }
365         
366         });
367         B3.addActionListener(new ActionListener(){
368             public void actionPerformed(ActionEvent e){
369                 if(ranswer==Integer.parseInt(T4.getText())){
370                     JOptionPane.showMessageDialog(null, "恭喜你!答对了");
371                     right++;
372                 }
373                 if(ranswer!=Integer.parseInt(T4.getText())){
374                     JOptionPane.showMessageDialog(null,"很遗憾!答错了!正确答案是"+ranswer);
375                     wrong++;
376                 }
377             }
378         });
379         
380         B2.addActionListener(new ActionListener(){
381             public void actionPerformed(ActionEvent e) {
382                 if(sum==num)
383                 {
384                     JOptionPane.showMessageDialog(null, "答题结束!答对了"+right+",答错了"+wrong);
385                     System.exit(0);
386                 }
387                 else
388                 {
389                     T3.setText(null);
390                     T4.setText(null);
391                 }
392             }
393         });
394 }
395 }

八、运行结果:

1.开始界面:

 2.若输出的题目数超过5个,则如下:

3.输入了题目数和运算符个数后,按“开始”按钮,则如下:

4.输入正确答案后,按“确定”按钮,则如下:

5.按完“确定”按钮后,按“下一题”按钮就会清空“四则运算式”和“输入答案”的文本框,如下:

6.再按”开始“按钮就会再次随机产生一个新的运算式,如下:

7.输入错误答案,则会显示如下:

8.然后再按“下一题”按钮,由于题目已出完,则如下:

9.当用户输入的运算符为2个时,则如下:

10.当用户输入的运算符为3个时,则如下:

 

九、两人合作时的照片: