作业2 结对 四则运算

  1 import java.util.*;
  2 import java.math.*;
  3 import java.awt.*;
  4 import javax.swing.*;
  5 import java.awt.event.*;
  6 public class SiZi extends JFrame implements ActionListener{
  7     JLabel L1,L2,L3,L4,L5,Ltimu;
  8     JTextField inputtext,answertxet;
  9     JButton B1,B2,B3,B4;
 10     int number,i,n,op,tid=1,count=0,backcolor=0,jieflag=0;
 11     int d1,d2, d3;
 12     public SiZi()
 13     {
 14         super("四则运算");
 15         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 16         setSize(400,250);
 17         this.setLocationRelativeTo(null);
 18         L1=new JLabel("输入出题数:");
 19         L2=new JLabel("题目:");
 20         L3=new JLabel("输入答案:");
 21         L4=new JLabel("反馈信息:");
 22         L5=new JLabel(" ");
 23         B1=new JButton("换肤");
 24         B2=new JButton("下一题");
 25         B3=new JButton("提交答案");B4=new JButton("阶乘运算");
 26         Ltimu=new JLabel(" ");
 27         inputtext=new JTextField(10);
 28         answertxet=new JTextField(10);
 29         inputtext.addActionListener(this);
 30         answertxet.addActionListener(this);
 31         B1.addActionListener(this);
 32         B2.addActionListener(this);B3.addActionListener(this);B4.addActionListener(this);
 33         GridLayout layout=new GridLayout(7,2);
 34         getContentPane().setLayout(layout);
 35         getContentPane().setBackground(Color.white);
 36         L1.setHorizontalAlignment(L1.RIGHT);
 37         L2.setHorizontalAlignment(L2.RIGHT);
 38         L3.setHorizontalAlignment(L3.RIGHT);
 39         L4.setHorizontalAlignment(L4.RIGHT);
 40         L5.setHorizontalAlignment(L5.CENTER);
 41         Ltimu.setHorizontalAlignment(L5.CENTER);
 42         inputtext.setHorizontalAlignment(inputtext.CENTER);
 43         add(L1);add(inputtext);
 44         add(L2);add(Ltimu);
 45         add(L3);add(answertxet);
 46         add(L4);add(L5);
 47         add(B3);add(B2);add(B1);add(B4);
 48         setVisible(true);
 49         setResizable(false);
 50     }
 51     
 52     public static void main(String[] args)
 53 
 54     {
 55         SiZi frame=new SiZi();
 56     }
 57     
 58 
 59     public void actionPerformed(ActionEvent e){
 60         if(e.getSource()==inputtext)
 61         {
 62             String str=inputtext.getText();L5.setText("");
 63             boolean isAllLetter = true;//定义一个boolean值,用来表示是否不含包含数字
 64             for(int i=0 ; i<str.length() ; i++)//循环遍历字符串   
 65                 if(!Character.isDigit(str.charAt(i))){   //用char包装类中的判断数字的方法判断每一个字符
 66                     isAllLetter = false;
 67                 }
 68             if(isAllLetter){
 69                 number=Integer.parseInt(str);n=number;
 70                 if(number>0&&number<6)
 71                 {
 72                     op=(int) (Math.random()*5);
 73                     d1=(int) (Math.random()*200-100);
 74                     d2=(int) (Math.random()*200-100);
 75                     d3=(int) (Math.random()*200-100);
 76                     switch(op)
 77                     {
 78                     case 0:
 79                         if(d2<0&&d3<0)Ltimu.setText(String.valueOf(d1)+"+("+String.valueOf(d2)+")×("+String.valueOf(d3)+")=");
 80                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"+("+String.valueOf(d2)+")×"+String.valueOf(d3)+"=");
 81                         else if (d2>0&&d3>0)Ltimu.setText(String.valueOf(d1)+"+"+String.valueOf(d2)+"×"+String.valueOf(d3)+"=");
 82                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"+"+String.valueOf(d2)+"×("+String.valueOf(d3)+")=");break;
 83                     case 1:
 84                         if(d2<0&&d3<0)Ltimu.setText(String.valueOf(d1)+"+("+String.valueOf(d2)+")÷("+String.valueOf(d3)+")=");
 85                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"+("+String.valueOf(d2)+")÷"+String.valueOf(d3)+"=");
 86                         else if (d2>0&&d3>0)Ltimu.setText(String.valueOf(d1)+"+"+String.valueOf(d2)+"÷"+String.valueOf(d3)+"=");
 87                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"+"+String.valueOf(d2)+"÷("+String.valueOf(d3)+")=");break;
 88                     case 2:
 89                         if(d2<0&&d3<0)Ltimu.setText(String.valueOf(d1)+"-("+String.valueOf(d2)+")×("+String.valueOf(d3)+")=");
 90                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"-("+String.valueOf(d2)+")×"+String.valueOf(d3)+"=");
 91                         else if (d2>0&&d3>0)Ltimu.setText(String.valueOf(d1)+"-"+String.valueOf(d2)+"×"+String.valueOf(d3)+"=");
 92                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"-"+String.valueOf(d2)+"×("+String.valueOf(d3)+")=");break;
 93                     case 3:
 94                         if(d2<0&&d3<0)Ltimu.setText(String.valueOf(d1)+"-("+String.valueOf(d2)+")÷("+String.valueOf(d3)+")=");
 95                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"-("+String.valueOf(d2)+")÷"+String.valueOf(d3)+"=");
 96                         else if (d2>0&&d3>0)Ltimu.setText(String.valueOf(d1)+"-"+String.valueOf(d2)+"÷"+String.valueOf(d3)+"=");
 97                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"-"+String.valueOf(d2)+"÷("+String.valueOf(d3)+")=");break;
 98                     case 4:
 99                         if(d2<0&&d3<0)Ltimu.setText(String.valueOf(d1)+"×("+String.valueOf(d2)+")÷("+String.valueOf(d3)+")=");
100                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"×("+String.valueOf(d2)+")÷"+String.valueOf(d3)+"=");
101                         else if (d2>0&&d3>0)Ltimu.setText(String.valueOf(d1)+"×"+String.valueOf(d2)+"÷"+String.valueOf(d3)+"=");
102                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"×"+String.valueOf(d2)+"÷("+String.valueOf(d3)+")=");break;
103                         }    
104                     tid=1;count=0;
105                     L2.setText("题目"+tid+": ");
106                     }
107                 else
108                 L5.setText("出题数限制在5以内");
109                 }
110             else
111                 L5.setText("错误!!输入数据含有其他字符!");
112             }
113         
114         else if(e.getSource()==B3||e.getSource()==answertxet){
115             String str=answertxet.getText();L5.setText("");
116             boolean isAllLetter = true;//定义一个boolean值,用来表示是否不含包含数字
117             for(int i=0 ; i<str.length() ; i++)//循环遍历字符串   
118                 if(!Character.isDigit(str.charAt(i))){   //用char包装类中的判断数字的方法判断每一个字符
119                     isAllLetter = false;
120                 }
121             if(isAllLetter){
122             double a=Double.parseDouble(str);
123             if(jieflag==0){
124                 switch(op)
125                 {
126                 case 0:
127                     if(d1+(d2*d3)==a){
128                         L5.setText("答案正确!请继续做题。");
129                         count++;
130                         }
131                     else{
132                         L5.setText("答错了!正确答案:"+(d1+d2*d3));
133                         };break;
134                         case 1:
135                             if(Math.abs(a-((d1+d2)/(double)d3))<0.01){
136                                 L5.setText("答案正确!请继续做题。");
137                                 count++;
138                                 }
139                             else{
140                                 L5.setText("答错了!正确答案为:"+String.format("%.2f", (d1+(double)d2/d3))); 
141                                 };break;
142                                 case 2:
143                                     if((d1-(d2*d3))==a){
144                                         L5.setText("答案正确!请继续做题。");
145                                         count++;
146                                         }
147                                     else{
148                                         L5.setText("答错了!正确答案为:"+(d1-d2*d3));
149                                         };break;
150                                         case 3:
151                                             if(Math.abs(a-((d1-d2)/(double)d3))<0.01){
152                                                 L5.setText("答案正确!请继续做题。");
153                                                 count++;
154                                                 }
155                                             else{
156                                                 L5.setText("答错了!正确答案为:"+String.format("%.2f", (d1-(double)d2/d3)));
157                                                 };break;
158                                                 case 4:
159                                                     if(Math.abs(a-((d1*d2)/(double)d3))<0.01){
160                                                         L5.setText("答案正确!请继续做题。");
161                                                         count++;
162                                                         }
163                                                     else{
164                                                         L5.setText("答错了!正确答案为:"+String.format("%.2f", (d1*(double)d2/d3)));
165                                                         };break;
166                                                         }
167                 }
168             else
169             {
170                 int i,sum=1;
171                 for(i=1;i<=d1;i++){
172                     sum=sum*i;
173                 }
174                 if(a==sum){L5.setText("答案正确!");}
175                 else
176                 L5.setText("答错了!正确答案为"+sum);
177                 jieflag=0;
178             }
179         }
180         else
181             L5.setText("错误!!输入数据含有其他字符!");}
182         
183         
184         else if(e.getSource()==B1){
185             switch(backcolor)
186             {
187             case 0:this.getContentPane().setBackground(Color.red);break;
188             case 1:this.getContentPane().setBackground(Color.black);break;
189             case 2:this.getContentPane().setBackground(Color.white);break;
190             case 3:this.getContentPane().setBackground(Color.yellow);break;
191             case 4:this.getContentPane().setBackground(Color.blue);break;
192             case 5:this.getContentPane().setBackground(Color.GREEN);break;
193             }
194             backcolor++;
195             backcolor=backcolor%6;
196         }
197         else if(e.getSource()==B4){
198             d1=(int) (Math.random()*10);
199             L2.setText("题目:");Ltimu.setText(d1+"!");    jieflag=1;inputtext.setText("");answertxet.setText("");L5.setText("");
200         }
201         else if(e.getSource()==B2){
202             
203             if(n>1)
204             {
205                 n--;
206                     op=(int) (Math.random()*5);
207                     d1=(int) (Math.random()*200)-100;
208                     d2=(int) (Math.random()*200)-100;
209                     d3=(int) (Math.random()*200)-100;
210                     switch(op)
211                      {
212                     case 0:
213                         if(d2<0&&d3<0)Ltimu.setText(String.valueOf(d1)+"+("+String.valueOf(d2)+")×("+String.valueOf(d3)+")=");
214                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"+("+String.valueOf(d2)+")×"+String.valueOf(d3)+"=");
215                         else if (d2>0&&d3>0)Ltimu.setText(String.valueOf(d1)+"+"+String.valueOf(d2)+"×"+String.valueOf(d3)+"=");
216                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"+"+String.valueOf(d2)+"×("+String.valueOf(d3)+")=");break;
217                     case 1:
218                         if(d2<0&&d3<0)Ltimu.setText(String.valueOf(d1)+"+("+String.valueOf(d2)+")÷("+String.valueOf(d3)+")=");
219                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"+("+String.valueOf(d2)+")÷"+String.valueOf(d3)+"=");
220                         else if (d2>0&&d3>0)Ltimu.setText(String.valueOf(d1)+"+"+String.valueOf(d2)+"÷"+String.valueOf(d3)+"=");
221                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"+"+String.valueOf(d2)+"÷("+String.valueOf(d3)+")=");break;
222                     case 2:
223                         if(d2<0&&d3<0)Ltimu.setText(String.valueOf(d1)+"-("+String.valueOf(d2)+")×("+String.valueOf(d3)+")=");
224                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"-("+String.valueOf(d2)+")×"+String.valueOf(d3)+"=");
225                         else if (d2>0&&d3>0)Ltimu.setText(String.valueOf(d1)+"-"+String.valueOf(d2)+"×"+String.valueOf(d3)+"=");
226                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"-"+String.valueOf(d2)+"×("+String.valueOf(d3)+")=");break;
227                     case 3:
228                         if(d2<0&&d3<0)Ltimu.setText(String.valueOf(d1)+"-("+String.valueOf(d2)+")÷("+String.valueOf(d3)+")=");
229                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"-("+String.valueOf(d2)+")÷"+String.valueOf(d3)+"=");
230                         else if (d2>0&&d3>0)Ltimu.setText(String.valueOf(d1)+"-"+String.valueOf(d2)+"÷"+String.valueOf(d3)+"=");
231                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"-"+String.valueOf(d2)+"÷("+String.valueOf(d3)+")=");break;
232                     case 4:
233                         if(d2<0&&d3<0)Ltimu.setText(String.valueOf(d1)+"×("+String.valueOf(d2)+")÷("+String.valueOf(d3)+")=");
234                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"×("+String.valueOf(d2)+")÷"+String.valueOf(d3)+"=");
235                         else if (d2>0&&d3>0)Ltimu.setText(String.valueOf(d1)+"×"+String.valueOf(d2)+"÷"+String.valueOf(d3)+"=");
236                         else if (d2<0&&d3>0)Ltimu.setText(String.valueOf(d1)+"×"+String.valueOf(d2)+"÷("+String.valueOf(d3)+")=");break;
237                      }
238                     tid++;
239                     L2.setText("题目"+tid+": ");
240                     answertxet.setText("");L5.setText("");            
241             }
242             else
243                 L5.setText("题目已答完,答对"+count+"题,答错"+(number-count)+"题");
244         }
245     }
246 }

 

 


运行截图:

开发环境:Eclipse。本来我也是用VC++做的四则运算,但由于要生成用户界面,在c中没学过,所以只能在学过的Java所运行的平台上做了。

实现时间:比原来想的时间短了,本来以为要用一周的时间去完成,但实际上确用了2天左右去完成,可能是因为结对编程的好处吧。第一次结对编程,很多东西都要分配好时间和任务,有时也有各执己见,认为某个方法该用哪个等,但两个人一起结对编程确实能够提高效率,有效的采用了两个人的思想去做这个程序

结对同伴:王逸辉、学号:201306114334 博客地址:http://www.cnblogs.com/wyh624945780/   在这个结对编程过程中,我主要做的是四则运算的加减乘除的题目生成,保留两位数以及答对多少题目等等,我的同伴负责做窗口的布局,换背景颜色功能,还有阶乘部分,我们是共同完成答案的对错判断的。

收获到和感悟:我承认我们两个都是有缺点的,但是拥有一样的缺点却可以说是没有的,我们互相交流好的想法以及讨论如何去解决这个功能实现或bug问题。我发现结对编程存在一点:使我们两都提高了积极性和效率。如果是单独工作的话,在遇到问题的时候,有可能不会积极地去解决问题,这时候或许会去上网看看视频,看看无关的网站等等。而两个人在一起结对编程,就会去讨论该怎么样去解决

扩展的方向:  1.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8 2.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数 3.程序可以出单个整数阶乘的题目:如:4!=24 4.程序可以设置皮肤功能,可以改变界面的颜色即可。

结对工作时的照片:

转载于:https://www.cnblogs.com/junkaiwang/p/4409680.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值