个人作业--四则运算2

一:题目要求:

   1.是否有乘除法

   2.是否有括号

   3.取值范围

   4.加减有无负数

   5.除非有无余数

二.设计思想:

  首先,整数的情况下,有乘除法,先写出生成算式的方法,随机生成两个数,数的范围有random.nextInt(大-小)+小来界定,随机生成了两个数用来表示算式运算的参数,然后随机生成一个0-4的数(不包括4)用if语句来判断0代表加法,1代表减法,2代表乘法3代表除法。生成了这三个数之后,就生成了一个算式,然后通过一个while循环来进行查重,如果遇见重复就继续重新生成三个数,然后下面进行if语句判断,是哪种运算法则,进行相应的if语句,加法和乘法直接输出结果,而当进行减法时,判断是否需要负数,如果需要负数的话直接进行结果输出,当不需要负数的时候,来进行两个数的判断,如果第一个数大于第二个数进行输出结果,当第一个数小于第二个数时通过while循环,重新生成一个两个数,然后在进行查重比较,再判断两个数的大小,如果第一个数大于第二个进行输出结果,循环结束,反之继续循环。当进行除法时,判断是否需要除数,如果需要除数直接进行输出结果,当不需要除数时,让第一个数除以第二个数,如果余数为0则进行输出结果,当余数不为0时,通过while循环重新生成两个数,然后进行查重,然后让第一个数除以第二个数,如果余数为0则直接输出结果,循环结束,如果余数不为0再进行循环。在整数的情况下,没有乘除法的时候,直接除去有乘法和除法的代码即可。然后是分数,分数则是生成四个随机数,第一个除以第二个表示第一个分数,第三个除以第四个表示第二个分数,然后同样生成0-4的分数来表示乘除法。然后进行查询,通过比较四个数的判断是否重复,如果重复则继续生成四个数,则继续执行下面,然后进行运算的判断,加法和乘法直接输出结果,只不过在分数部分,需要求前两个数的最大公约数,来进行分数的约分。减法和除法的思路和整数部分类似。

三.程序源代码:

  

package calculate2;
import java.util.*;
public class cal2 {

public static void main(String[] args) {
// TODO 自动生成的方法存根

    Scanner input=new Scanner(System.in);
    int num=0;int little=0; int big=0; int select=0;int select2=0;
    System.out.println("请输入需要打印的数量");
    num=input.nextInt();
    System.out.println("请输入最小范围");
    little=input.nextInt();
    System.out.println("请输入最大范围");
    big=input.nextInt();
    System.out.println("请选择:1.整数2.分数");
    int type=input.nextInt();
    if(type==1)
    {
      System.out.println("是否需要乘除法1.需要2.不需要");
      select=input.nextInt();
      if(select==1)
    {

      cc(little,big,num);

    }
      if(select==2)
    {
        jj(little,big,num);

    }
    }
      if(type==2)
    {
        System.out.println("是否需要乘除法1.需要2.不需要");
        select2=input.nextInt();
      if(select2==1)
    {
      fscc(big,num);
    }
      if(select2==2)
    {
      fsjj(big,num);
    }
     }

 }
    public static void cc(int a,int b,int c) // 乘除
    {

      boolean flag=true;
      boolean flag3=true;
      Random random=new Random();
      Scanner in=new Scanner(System.in);
      int m[]=new int [1000];
      int n[]=new int [1000];
      int p[]=new int [1000];
      System.out.println("减法是否有负数1.可以有2.无");
      int fs=in.nextInt();
      System.out.println("除法是否有余数1.可以有2.无");
      int ys=in.nextInt();
      for(int i=0;i<c;i++) //生成式子
    {
      m[i]=random.nextInt(4);
      n[i]=random.nextInt(b-a)+a;
      p[i]=random.nextInt(b-a)+a;
      int r=i-1;
    while(r>=0) // 判断重复,重新生成式子
    {
      if(m[i]==m[r]&&n[i]==n[r]&&p[i]==p[r])
    {
      m[i]=random.nextInt(4);
      n[i]=random.nextInt(b-a)+a;
      p[i]=random.nextInt(b-a)+a;
      r=i;
    }
      else if(m[i]==2&&m[r]==2&&n[i]==p[r]&&n[r]==p[i])
    {
      m[i]=random.nextInt(4);
      n[i]=random.nextInt(b-a)+a;
      p[i]=random.nextInt(b-a)+a;
      r=i;
    }
      else if(m[i]==0&&m[r]==0&&n[i]==p[r]&&p[i]==n[r])
    {
      m[i]=random.nextInt(4);
      n[i]=random.nextInt(b-a)+a;
      p[i]=random.nextInt(b-a)+a;
      r=i;
    }
      r--;
    }
    if(m[i]==0)
    {
      System.out.println(n[i]+"+"+p[i]);
    }
    if(m[i]==1)
    {

      if(fs==1)
      {
        System.out.println(n[i]+"-"+p[i]);
      }
      else if(fs==2)
      {
        if(n[i]>=p[i])
        {
          System.out.println(n[i]+"-"+p[i]);
        }
        if(n[i]<p[i])
        {
          int j=i-1;
          flag=true;
          while(flag)
        {
          n[i]=random.nextInt(b-a)+a;
          p[i]=random.nextInt(b-a)+a;

          while(j>=0) // 重复,重新生成式子
        {
          if(n[i]==n[j]&&p[i]==p[j])
          {
            n[i]=random.nextInt(b-a)+a;
            p[i]=random.nextInt(b-a)+a;
            j=i;
          }
            j--;
        }
          if(n[i]>p[i])
        {
          System.out.println(n[i]+"-"+p[i]);
          flag=false;
      }
     }

  }
  }
}
      if(m[i]==2)
    {
      System.out.println(n[i]+"*"+p[i]);
    }
      if(m[i]==3)
    {

      if(ys==1) // 有余数
    {
      System.out.println(n[i]+"/"+p[i]);
    }
      if(ys==2) //没有余数
    {
      if(n[i]%p[i]==0)
    {
      System.out.println(n[i]+"/"+p[i]);
    }
      else if(n[i]%p[i]!=0)
    {
      flag3=true;
      while(flag3)
    {
      n[i]=random.nextInt(b-a)+a;
      p[i]=random.nextInt(b-a)+a;
      int j=i-1;
    while(j>=0) // 重复,重新生成式子
    {
      if(n[i]==n[j]&&p[i]==p[j])
    {
      n[i]=random.nextInt(b-a)+a;
      p[i]=random.nextInt(b-a)+a;
      j=i;
    }
      j--;
    }
      if(n[i]%p[i]==0) // 如果相除没有余数
    {
      System.out.println(n[i]+"/"+p[i]);
      flag3=false;
    }
    }
    }
    }

  }
  }
}
    public static void jj(int a,int b,int c) //加减
  {
      int u;
      boolean flag=true;
      Random random=new Random();
      Scanner in=new Scanner(System.in);
      int m[]=new int [1000];
      int n[]=new int [1000];
      int p[]=new int [1000];
      System.out.println("有无负数1.可以有2.没有");
      u=in.nextInt();
      for(int i=0;i<c;i++)
    {
      m[i]=random.nextInt(2);
      n[i]=random.nextInt(b-a)+a;
      p[i]=random.nextInt(b-a)+a;

      int r=i-1;
      while(r>=0)
    {
      if(m[i]==m[r]&&n[i]==n[r]&&p[i]==p[r])
    {
      m[i]=random.nextInt(2);
      n[i]=random.nextInt(b-a)+a;
      p[i]=random.nextInt(b-a)+a;
      r=i;
    }
      if(m[i]==0&&m[r]==0&&n[i]==p[r]&&p[i]==n[r])
    {
      m[i]=random.nextInt(2);
      n[i]=random.nextInt(b-a)+a;
      p[i]=random.nextInt(b-a)+a;
      r=i;
    }
      r--;
    }
    if(u==1&&m[i]==0)
  {
      System.out.println(n[i]+"+"+p[i]);
    }
    if(u==1&&m[i]==1)
    {
      System.out.println(n[i]+"-"+p[i]);
    }
      if(u==2&&m[i]==0)
    {
      System.out.println(n[i]+"+"+p[i]);
    }
    if(u==2&&m[i]==1)
    {
     if(n[i]>p[i])
      System.out.println(n[i]+"-"+p[i]);
     if(n[i]<p[i])
     {
        flag=true;
        while(flag)
        {
          n[i]=random.nextInt(b-a)+a;
          p[i]=random.nextInt(b-a)+a;
          int j=i-1;
          while(r>=0) // 重复,重新生成式子
          {
            if(n[i]==n[j]&&p[i]==p[j])
            {
              n[i]=random.nextInt(b-a)+a;
              p[i]=random.nextInt(b-a)+a;
              j=i;
            }
            j--;
          }
        if(n[i]>=p[i])
        {flag=false;}
      }
      System.out.println(n[i]+"-"+p[i]);
    }
    }    
    }
}
      public static void fscc(int a,int c)

    {
      int x=0;int y=0;int z=0;
      Random random=new Random();
      Scanner in=new Scanner(System.in);
      System.out.println("是否有负数1.可以有2.无");
      int fs=in.nextInt();

      System.out.println("是否有余数1.可以有2.无");
      int ys=in.nextInt();
      int m[]=new int [1000];
      int n[]=new int[1000];
      int o[]=new int[1000];
      int p[]=new int[1000];
      int q[]=new int[1000];
      for(int i=0;i<c;i++)
      {
        m[i]=random.nextInt(4);
        n[i]=random.nextInt(a)+1;
        o[i]=random.nextInt(a)+1;
        p[i]=random.nextInt(a)+1;
        q[i]=random.nextInt(a)+1;
        int r=i-1;
        boolean flag=true;
        boolean flag1=true;
      while(flag)
      {
        if(n[i]>=o[i])
      {
        n[i]=random.nextInt(a)+1;
        o[i]=random.nextInt(a)+1;
        if(n[i]<o[i])
      {
        flag=false;
      }
    }
        if(n[i]<o[i])
        {
          flag=false;
        }
      }
        while(flag1)
        {
          if(p[i]>=q[i])
          {
            p[i]=random.nextInt(a)+1;
            q[i]=random.nextInt(a)+1;
            if(p[i]<q[i])
          {
              flag1=false;
          }
      }
        if(p[i]<q[i])
        {
           flag1=false;
        }
      }
         while(r>=0)
        {
          if(m[i]==m[r]&&n[i]==n[r]&&o[i]==o[r]&&p[i]==p[r]&&q[i]==q[r])
          {  
            m[i]=random.nextInt(4);
            n[i]=random.nextInt(a)+1;
            o[i]=random.nextInt(a)+1;
            p[i]=random.nextInt(a)+1;
            q[i]=random.nextInt(a)+1;
            r=i;
          }
        if(m[i]==0&&m[r]==0&&n[i]==n[r]&&o[i]==o[r]&&p[i]==p[r]&&q[i]==q[r])
        {
            m[i]=random.nextInt(4);
            n[i]=random.nextInt(a)+1;
            o[i]=random.nextInt(a)+1;
            p[i]=random.nextInt(a)+1;
            q[i]=random.nextInt(a)+1;
            r=i;
        }
         if(m[i]==2&&m[r]==2&&n[i]==n[r]&&o[i]==o[r]&&p[i]==p[r]&&q[i]==q[r])
          {
            m[i]=random.nextInt(4);
            n[i]=random.nextInt(a)+1;
            o[i]=random.nextInt(a)+1;
            p[i]=random.nextInt(a)+1;
            q[i]=random.nextInt(a)+1;
            r=i;
          }
            r--;
        }

          if(m[i]==0)
          {
            y=gongyue(p[i],q[i]);
            z=gongyue(n[i],o[i]);
            System.out.println(n[i]/z+"/"+o[i]/z+" + "+p[i]/y+"/"+q[i]/y);
          }
          if(m[i]==1)
          {
            x=gongbei(o[i],q[i]);
            y=gongyue(p[i],q[i]);
            z=gongyue(n[i],o[i]);
            if(fs==1) //可以有负数
            {
              System.out.println(n[i]/z+"/"+o[i]/z+" - "+p[i]/y+"/"+q[i]/y);
            }
            if(fs==2) //没有负数
            {

              if(n[i]*x/o[i]>=p[i]*x/q[i])
              {
                System.out.println(n[i]/z+"/"+o[i]/z+" - "+p[i]/y+"/"+q[i]/y);
              }
              if(n[i]*x/o[i]<p[i]*x/q[i])
              {
                boolean flag2=true;
                int j=i-1;
                while(flag2)
                {
                  n[i]=random.nextInt(a)+1;
                  o[i]=random.nextInt(a)+1;
                  p[i]=random.nextInt(a)+1;
                                                  q[i]=random.nextInt(a)+1;
                                                   while(j>=0)
                  {
                    if(n[i]==n[j]&&o[i]==o[j]&&p[i]==p[j]&&q[i]==q[j])
                    {
                        n[i]=random.nextInt(a)+1;
                        o[i]=random.nextInt(a)+1;
                        p[i]=random.nextInt(a)+1;
                        q[i]=random.nextInt(a)+1;
                          j=i;
                    }
                      j--;
                  }
                  if(n[i]*x/o[i]>=p[i]*x/q[i])
                  {
                      int y2=gongyue(p[i],q[i]);
                      int z2=gongyue(n[i],o[i]);
                      System.out.println(n[i]/z2+"/"+o[i]/z2+" - "+p[i]/y2+"/"+q[i]/y2);
                      flag2=false;
                   }
                 }
                  }
                  }

            }//
              if(m[i]==2)
              {
                y=gongyue(p[i],q[i]);
                z=gongyue(n[i],o[i]);
                System.out.println(n[i]/z+"/"+o[i]/z+" * "+p[i]/y+"/"+q[i]/y);
              }
              if(m[i]==3)
              {  
                  y=gongyue(p[i],q[i]);
                  z=gongyue(n[i],o[i]);
                  if(ys==1)
                  {
                    System.out.println(n[i]/z+"/"+o[i]/z+" / "+p[i]/y+"/"+q[i]/y);
                  }
            if(ys==2)
            {
              int w1=n[i]*q[i];
              int w2=p[i]*o[i];

              if((w1%w2)==0)
              {
              System.out.println(n[i]/z+"/"+o[i]/z+" / "+p[i]/y+"/"+q[i]/y);
              }
              if((w1%w2)!=0)
              {
                int j=i-1;
                boolean flag3=true;
                while(flag3)
                {
                     n[i]=random.nextInt(a)+1;
                      o[i]=random.nextInt(a)+1;
                      p[i]=random.nextInt(a)+1;
                      q[i]=random.nextInt(a)+1;

                  while(j>=0)
                {
                    if(n[i]==n[j]&&o[i]==o[j]&&p[i]==p[j]&&q[i]==q[j])
                  {
                    n[i]=random.nextInt(a)+1;
                    o[i]=random.nextInt(a)+1;
                    p[i]=random.nextInt(a)+1;
                    q[i]=random.nextInt(a)+1;
                    j=i;
                    }
                      j--;
                }
                int w3=n[i]*q[i];
                  int w4=o[i]*p[i];
                if((w3%w4)==0)
              {
                int y1=gongyue(p[i],q[i]);
                int z1=gongyue(n[i],o[i]);
                System.out.println(n[i]/z1+"/"+o[i]/z1+" / "+p[i]/y1+"/"+q[i]/y1);
              flag3=false;
                }
              }
            }
          }
        }
      }
      }
      public static void fsjj(int a,int c)
    {
      int m[]=new int [1000];
      int n[]=new int [1000];
      int o[]=new int [1000];
      int p[]=new int [1000];
      int q[]=new int [1000];
      int x=0;int y=0;int z=0;
      Random random=new Random();
      Scanner in=new Scanner(System.in);
      int fs=0;
      System.out.println("请选择是否负数1.可以有2.无");
      fs=in.nextInt();
      for(int i=0;i<c;i++)
      {
        m[i]=random.nextInt(2);
        n[i]=random.nextInt(a)+1;
        o[i]=random.nextInt(a)+1;
        p[i]=random.nextInt(a)+1;
        q[i]=random.nextInt(a)+1;
        int r=i-1;
      boolean flag=true;
        boolean flag1=true;
      while(flag)
      {
        if(n[i]>=o[i])
        {
          n[i]=random.nextInt(a)+1;
          o[i]=random.nextInt(a)+1;
        if(n[i]<o[i])
        {
          flag=false;
        }
        }  
          if(n[i]<o[i])
        {
        flag=false;
          }
        }
        while(flag1)
      {
    if(p[i]>=q[i])
    {
    p[i]=random.nextInt(a)+1;
    q[i]=random.nextInt(a)+1;
    if(p[i]<q[i])
    {
    flag1=false;
    }
    }
      if(p[i]<q[i])
      {
        flag1=false;
      }
    }
      while(r>=0)
    {
      if(m[i]==m[r]&&n[i]==n[r]&&o[i]==o[r]&&p[i]==p[r]&&q[i]==q[r])
      {
        m[i]=random.nextInt(2);
        n[i]=random.nextInt(a)+1;
        o[i]=random.nextInt(a)+1;
        p[i]=random.nextInt(a)+1;
        q[i]=random.nextInt(a)+1;
    r=i;
    }
      if(m[i]==0&&m[r]==0&&n[i]==n[r]&&o[i]==o[r]&&p[i]==p[r]&&q[i]==q[r])
    {
      m[i]=random.nextInt(2);
      n[i]=random.nextInt(a)+1;
      o[i]=random.nextInt(a)+1;
      p[i]=random.nextInt(a)+1;
      q[i]=random.nextInt(a)+1;
      r=i;
    }

      if(m[i]==2&&m[r]==2&&n[i]==n[r]&&o[i]==o[r]&&p[i]==p[r]&&q[i]==q[r])
    {
      m[i]=random.nextInt(2);
      n[i]=random.nextInt(a)+1;
      o[i]=random.nextInt(a)+1;
      p[i]=random.nextInt(a)+1;
      q[i]=random.nextInt(a)+1;
          r=i;
    }
      r--;
    }
      if(m[i]==0)
    {
      y=gongyue(p[i],q[i]);
      z=gongyue(n[i],o[i]);
      System.out.println(n[i]/z+"/"+o[i]/z+" + "+p[i]/y+"/"+q[i]/y);
    }
    if(m[i]==1)
    {
      x=gongbei(o[i],q[i]);
      y=gongyue(p[i],q[i]);
      z=gongyue(n[i],o[i]);
      if(fs==1) //可以有负数
    {
      System.out.println(n[i]/z+"/"+o[i]/z+" - "+p[i]/y+"/"+q[i]/y);
    }
      if(fs==2) //没有负数
    {
      if(n[i]*x/o[i]>=p[i]*x/q[i])
    {
      System.out.println(n[i]/z+"/"+o[i]/z+" - "+p[i]/y+"/"+q[i]/y);
    }
    if(n[i]*x/o[i]<p[i]*x/q[i])
    {
      boolean flag2=true;
      int j=i-1;
      while(flag2)
    {
      n[i]=random.nextInt(a)+1;
      o[i]=random.nextInt(a)+1;
      p[i]=random.nextInt(a)+1;
      q[i]=random.nextInt(a)+1;
      while(j>=0)
    {
      if(n[i]==n[j]&&o[i]==o[j]&&p[i]==p[j]&&q[i]==q[j])
    {
    n[i]=random.nextInt(a)+1;
    o[i]=random.nextInt(a)+1;
    p[i]=random.nextInt(a)+1;
    q[i]=random.nextInt(a)+1;
    j=i;
  }
    j--;
  }
  if(n[i]*x/o[i]>=p[i]*x/q[i])
  {
    System.out.println(n[i]/z+"/"+o[i]/z+" - "+p[i]/y+"/"+q[i]/y);
    flag2=false;
  }
  }
  }
  }

  }//

  }
  }
  public static int gongbei(int x,int y)
  {
    int z;
  for(z=x;;z++)
  {
    if(z%x==0&&z%y==0)
    break;
  }
    return z;
  }
  public static int gongyue(int x,int y)

  {
    int z;
    for(z=x;z>0;z--)
  {
    if(x%z==0&&y%z==0)
    break;
  }
  return z;
  }
}

四:结果截图:

  

     

  

  

  

  

  

  

  

  

 五.PSP0级记录

  项目计划:

    

  时间记录:

    

  缺陷记录:

    

原文地址:https://www.cnblogs.com/xieshiyu/p/6531191.html