zoukankan      html  css  js  c++  java
  • 作业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.程序可以设置皮肤功能,可以改变界面的颜色即可。

    结对工作时的照片:

  • 相关阅读:
    删除CSDN上传图片水印
    Win10任务栏中隐藏/恢复日期显示
    使用idea和gradle编译spring5源码
    错误:找不到或无法加载主类
    判断字符串是否为数字
    mysql根据json数据过滤
    mysql当不存在时插入
    org.apache.xerces.parsers.SAXParser
    mybatis mapper判断if条件写法
    《Java面向对象编程》
  • 原文地址:https://www.cnblogs.com/junkaiwang/p/4409680.html
Copyright © 2011-2022 走看看