一、时间记录日志:

日期 开始时间 结束时间 中断时间 净时间 活动 备注
3.14 8:00 9:50 10 100 上课 课间
3.15 16:00 18:00 10 110 编程。阅读  
3.17 19:00 20:50   110 编程  
3.19 14:00 18:00 20 220 编程  

 

二、缺陷记录日志:

日期 编号 引入阶段 排除阶段 修复时间 修复缺陷
3.15 1 编码 编译 15min  
描述:For循环里没有初始化变量
  2 编码 编码 20min  
描述:While和If语句运用错误
           

三、项目计划总结:

1、设计思路和设计心得:在做这个程序之前,我首先考虑的是要将功能加到上次的程序里面。考虑到上次没有化简真分数,所以我先考虑用辗转相除法递归解决这个问题,但是因为对辗转相除法的理解不够,我还是选择了用For循环的麻烦的方法,在这里因为循环没有初始化一个变量浪费了很多时间。为了防止出现相同的式子,我和我的搭档讨论了一个FOR循环套fOR循环的方法解决了这个问题,在分数的运算里,我一开始打算一出现重复的就把分子分母相加赋值给分母,但是因为考虑到这样会超出自己定义的数值的范围,所以作废,后来我用了Whlie语句来解决,一旦相同就加1,还写了几个IF语句来控制加1后可能出现的情况。因为我的运算符的控制使用INT类型的数来决定的,所以控制有无乘除就特别简单,只需要用一个IF语句来控制是%2还是%4即可。有无负数我用了WHILE语句来控制,一旦不满足就继续重随,这里要说明的是,在我的程序里,有负数不代表没有正数的结果,但是没有负数一定只有正数。

在编写程序的过程中,我和我的搭档会因为一个很小的BUG浪费很多时间,比如我在写程序的期间,会因为要用IF语句而用了While语句导致无法输出,会因为没有在循环开头初始化变量导致结果不正确。这些小问题都是要极力避免的。还有一个不足就是,程序用了太多的IF语句控制,可能会比较乱。

括号问题不会做,未在规定时间完成,毫无思路,查阅了JAVA中的栈的写法发现和我的代码格格不入,时间不够也就放弃了。

2、程序源代码:

import java.util.Scanner;

//20142984chengchongjing
//sizeyunsuan 2
public class Main {
    
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Scanner in=new Scanner(System.in);
        System.out.println("请输入数据范围 1- ");
        int  F=in.nextInt();
        
        
        System.out.println("请输入要生成的整数四则运算的个数 ");
        int n1=in.nextInt();
        
        System.out.println("有无乘除法   有输入1 没有输入0");
         int Jiajian;
         Jiajian=in.nextInt(); 
         
         System.out.println("加减无有负数  有输入1 没有输入0");
         int Fu=in.nextInt();
         
         int Yv=3; 
         if(Jiajian==1)
         { 
             System.out.println("除法有无余数 有输入1 没有输入0");
               Yv=in.nextInt();
         } 
        
         
         int Fis[]  =new int[n1];
         int Sec[]  =new int[n1];
         int Thr[]  =new int[n1];
         int i;
         
        for(i =0;i<n1;i++)    
          {
          Sec[i]=(int)(Math.random()*(F/2));
          Fis[i]=(int)(Math.random()*F);
         
          if(Jiajian==0)
              {
          Thr[i]=((int)(Math.random()*F))%2;
                  }
          if(Jiajian==1)
              {
              Thr[i]=((int)(Math.random()*F))%4;
                  }  
          if(Thr[i]==3&&Sec[i]==0){Sec[i]++;}//防止除法里分母为0 ;
          if(Yv==0&&Thr[i]==3){
              while(Fis[i]%Sec[i]!=0)
               { Fis[i]=Sec[i]*2;}   
           }
           if(Yv==1&&Thr[i]==3){
               while(Fis[i]%Sec[i]==0)
               { Fis[i]=(int)(Math.random()*F);}   
               
               if(Fu==0&&Thr[i]==1){
                   while (Fis[i]<Sec[i]){ Fis[i]=(int)(Math.random()*F);}
               }
           }
            
          } 
       
       for(i=0;i<n1-1;i++)
       {   
           for(int j=i;j<n1-1;j++)
           {
               if((Fis[i]==Fis[j])&&(Sec[i]==Sec[j])&&(Thr[i]==Thr[j]))
               {
                   Fis[i]=Fis[i]+1;
                   }
           }
       }//比较是否重复
       
     
       for(i=0;i<n1;i++)    
            {
            if(Thr[i]==0)
                System.out.println(Fis[i]+" + "+ Sec[i]+"=");
             if(Thr[i]==1)
                 System.out.println(Fis[i]+" - "+ Sec[i]+"=");
             if(Thr[i]==2)
                 System.out.println(Fis[i]+" * "+ Sec[i]+"=");
             if(Thr[i]==3)
                 System.out.println(Fis[i]+" / "+ Sec[i]+"=");        
            }
      
       
       
       
         System.out.println("请输入要生成的分数四则运算的个数 ");
         int n2=in.nextInt();  
       int Fis1[]  =new int[n2];   
       int Sec1[]  =new int[n2];  
       int Thr1[]  =new int[n2];  
       int Four[]  =new int[n2];  
    
       
         for(int j=0;j<n2;j++)    
               {
                 Fis1[j]=(int)(Math.random()*F);
                 Sec1[j]=(int)(Math.random()*F);
                   Thr1[j]=(int)(Math.random()*F);
                    Four[j]=(int)(Math.random()*F);
           
                    if( Fis1[j]> Sec1[j]){
                            int Chang;
                            Chang= Fis1[j]; Fis1[j]= Sec1[j]; Sec1[j]=Chang;
                        }
          
                    if(Thr1[j]>Four[j]){
                            int Chang;
                            Chang=Thr1[j];Thr1[j]=Four[j];Four[j]=Chang;
                        }//交换大小
                    
    
         int Chang2=Fis1[j];
            for(int k=2;k<=Chang2;k++){
                if(Fis1[j]%k==0&& Sec1[j]%k==0)
                {
                  Fis1[j]=Fis1[j]/k;
                  Sec1[j]= Sec1[j]/k;
                   k=1;
                }
                
            }
           int Chang3=Thr1[j];
          for(int k=2;k<=Chang3;k++){
              if(Thr1[j]%k==0&&Four[j]%k==0)
              {
                  Thr1[j]=Thr1[j]/k;
                  Four[j]=Four[j]/k;
                  k=1;
              }
          }//化简真分数
          
           
           while(Fis1[j]==0)
               { Fis1[j]=(int)(Math.random()*F);}
            while (Sec1[j]==0||Sec1[j]==Fis1[j]) 
               { Sec1[j]=(int)(Math.random()*F);} 
            while( Thr1[j]==0)
             {  Thr1[j]=(int)(Math.random()*F);}
          while (Four[j]==0||Four[j]== Thr1[j]) 
             { Four[j]=(int)(Math.random()*F);} 
          
              int x=(int)(Math.random()*F);
        
              for( i=0;i<n2-1;i++){
                   for(int k=i;k<n2-1;k++)
                   {
                       if(Fis1[i]==Fis1[j]&&Sec1[i]==Sec1[j]&&Thr1[i]==Thr1[j]&&Four[i]==Four[j])
                       {
                           Sec1[i]=Sec1[i]+1;
                           while (Sec1[i]==Fis1[i])
                                   { Sec1[i]=Sec1[i]+1;}
                       }
                   }    
              }
          if(x%4==0)
              System.out.println(Fis1[j]+"/"+Sec1[j]+" + "+Thr1[j]+"/"+Four[j]+"=");
          if(x%4==1)
              System.out.println(Fis1[j]+"/"+Sec1[j]+" - "+Thr1[j]+"/"+Four[j]+"=");
          if(x%4==2)
              System.out.println(Fis1[j]+"/"+Sec1[j]+" * "+Thr1[j]+"/"+Four[j]+"=");
          if(x%4==3)
              System.out.println(Fis1[j]+"/"+Sec1[j]+" / "+Thr1[j]+"/"+Four[j]+"=");
           }
      
                                            }
  
                }

3.运行截图:

 

posted on 2016-03-19 17:49  憧憧  阅读(180)  评论(0编辑  收藏  举报