• 个人作业--四则运算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级记录

      项目计划:

        

      时间记录:

        

      缺陷记录:

        

  • 相关阅读:
    CSS+JS实现兼容性很好的无限级下拉菜单
    自动切换的JS菜单
    (2)C#连sqlite
    protobuf编译器
    (67) c# 序列化
    (66) c# async await
    (65)C# 任务
    mbatis 入门
    (64)C# 预处理器指令
    (63)C# 不安全代码unsafe
  • 原文地址:https://www.cnblogs.com/xieshiyu/p/6531191.html
Copyright © 2020-2023  润新知