zoukankan      html  css  js  c++  java
  • Right-BICEP要求设计四则运算2

    import java.util.*;
    public class Operation2 {
        public static int SIZE(int size)//定制数量
        {
            int q;
            q=size;
            return q;
        }
        
        public static int SecondOperation(String p1)//是否有乘除法
        {
            int q = 4;
            if(p1.equals("Y"))
            {
                q=4;
            } 
            if(p1.equals("N"))
            {
                q=2;
            }
            return q;
        }
        
        public static String Negative(String p2)//加减有无负数
        {
            String q;
            q=p2;
            return q;
        }
        
        public static String Remainder(String p3)//除法有无余数
        {
            String q;
            q=p3;
            return q;
        }
        
        public static int Max(int max)//最大数
        {
            int m;
            m=max;
            return m;
        }
        public static int Min(int min)//最小数
        {
            int m;
            m=min;
            return m;
        }
        
        public static void Display(int SIZE,int SecondOperation,String Negative,String Remainder,int Max,int Min)//算式计算
        {
            String Again[][]=new String[SIZE][1];//用数组装算式,用以判断是否重复
            for(int i=0;i<SIZE;i++)//重复次数,用以确定算式多少
            {        
                int cha=Max-Min;
                int c,q1,w1,q2,w2;
                String s1=new String();
                String s2=new String();
                String equation=new String();       
                String symbol=new String();//符号判定
                c=(int)(Math.random()*SecondOperation);
                if(c==0) symbol="+";
                if(c==1) symbol="-";
                if(c==2) symbol="*";
                if(c==3) symbol="/";     
                for(int j=0;j<2;j++)//两次循环,第一次为第一个数字,第二次为第二个数字
                {
                    int n1 =-99999,n2=-99999;//用于后面是否为分数的判定
                    int s=(int)(Math.random()*2);//随机数判定整数或分数,0整数,1分数
                    if(s==0)//整数
                    {
                        if(Negative.equals("N"))
                        {
                            if(c==0||c==1)
                            {
                                while(n1<0)
                                {
                                    n1=(int)(Min+Math.random()*(cha+1));//随机产生从min到max之间的数
                                }
                            }
                            else
                            {
                                n1=(int)(Min+Math.random()*(cha+1));
                            }
                        }
                        if(Negative.equals("Y"))
                        {
                            n1=(int)(Min+Math.random()*(cha+1));
                        }
                    }
                    if(s==1)//分数
                    {
                        n1=(int)(Min+Math.random()*(cha+1));//随机产生从min到max之间的数
                        n2=(int)(Min+Math.random()*(cha+1));
                            if(Negative.equals("N"))
                            {
                                if(c==0||c==1)
                                {
                                    while(n1<=0||n2<=0)
                                    {
                                        n1=(int)(Min+Math.random()*(cha+1));
                                        n2=(int)(Min+Math.random()*(cha+1));
                                    }
                                }
                                else
                                {
                                    while(n1==0||n2==0)//分母不能为零
                                    {
                                        n1=(int)(Min+Math.random()*(cha+1));
                                        n2=(int)(Min+Math.random()*(cha+1));
                                    }
                                }
                            }
                            if(Negative.equals("Y"))
                            {
                                while(n1==0||n2==0)//分母不能为零
                                {
                                    n1=(int)(Min+Math.random()*(cha+1));
                                    n2=(int)(Min+Math.random()*(cha+1));
                                }
                            }
                        int z1=Math.abs(n1),z2=Math.abs(n2);//取n1和n2的绝对值,以便化简输出
                        int chushu=2;
                        if(z1>z2)//化简
                        {
                            while(z2>=chushu)
                            {
                                if(z1%chushu==0&&z2%chushu==0)
                                {
                                    z1=z1/chushu;z2=z2/chushu;
                                }
                                else
                                {
                                    chushu++;
                                }
                            }                    
                        }
                        else if(z1<z2)
                        {
                            while(z1>=chushu)
                            {
                                if(z1%chushu==0&&z2%chushu==0)
                                {
                                    z1=z1/chushu;z2=z2/chushu;
                                }
                                else
                                {
                                    chushu++;
                                }
                            }
                        }
                        else
                        {
                            z1=1;z2=1;
                        };
                        if(n1<0)//去掉绝对值,返回原来的数          
                        {
                            n1=0-z1;
                        }
                        else 
                        {
                            n1=z1;
                        }
                        if(n2<0)
                        {
                            n2=0-z2;
                        }
                        else 
                        {
                            n2=z2;
                        }
                    }
                    if(j==0)//第一个数字
                    {
                        q1=n1;w1=n2;
                        if(w1==-1&&q1<0)
                        {
                            q1=Math.abs(q1);
                        }
                        if(w1==-1&&q1>0)
                        {
                            q1=0-q1;
                        }
                        if(w1>-99999)//如果存在分母,则为分数
                        {
                            if(Math.abs(w1)!=1)
                            {
                                if(q1<0&&w1<0)
                                {
                                    q1=Math.abs(q1);w1=Math.abs(w1);
                                }
                                if(w1<0)
                                {
                                    s1="("+q1+"/("+w1+"))"+"";
                                }
                                else
                                {
                                    s1="("+q1+"/"+w1+")"+"";
                                }
                            }
                            if(Math.abs(w1)==1)//为整数
                            {
                                if(q1>=0)
                                {
                                    s1=q1+"";
                                }
                                if(q1<0)
                                {
                                    s1="("+q1+")"+"";
                                }
                            }
                        }
                        
                        else//否则为整数
                        {
                            if(q1>=0)
                            {
                                s1=q1+"";
                            }
                            if(q1<0)
                            {
                                s1="("+q1+")"+"";
                            }
                        }
                    }
                    if(j==1)//第二个数字
                    {
                        q2=n1;w2=n2;
                        if(c==3)//当为除法时,除数不能为0,
                        {
                            while(q2==0)
                            {
                                q2=(int)(Min+Math.random()*(cha+1));
                            }//分子或整数不能为0
                        }
                        if(w2==-1&&q2<0)
                        {
                            q2=Math.abs(q2);
                        }
                        if(w2==-1&&q2>0)
                        {
                            q2=0-q2;
                        }
                        if(w2>-99999)//如果存在分母,则为分数
                        {
                            if(Math.abs(w2)!=1)
                            {
                                if(q2<0&&w2<0)
                                {
                                    q2=Math.abs(q2);w2=Math.abs(w2);
                                }
                                if(w2<0)
                                {
                                    s2="("+q2+"/("+w2+"))"+"";
                                }
                                else
                                {
                                    s2="("+q2+"/"+w2+")"+"";
                                }
                            }
                            else
                            {
                                if(q2<0)
                                {
                                    s2="("+q2+")"+"";
                                }
                                if(q2>0)
                                {
                                    s2=q2+"";
                                }
                            }
                        }
                        else//否则为整数
                        {
                            if(q2<0)
                            {
                                s2="("+q2+")"+"";
                            }
                            if(q2>0)
                            {
                                s2=q2+"";
                            }
                        }
                        if(c==3&&Remainder.equals("N"))//除法无余数
                        {
                            q1=q2*n1;w1=w2;
                            if(w1%n1==0)
                            {
                                w1=w1/n1;q1=q1/n1;
                            }
                            if(w1>-99999)//如果存在分母,则为分数
                            {
                                if(Math.abs(w1)!=1)
                                {s1="("+q1+"/"+w1+")"+"";}
                                else//否则为整数
                                {
                                    s1=q1+"";
                                }
                            }
                            else//否则为整数
                            {
                                s1=q1+"";
                            }
                            
                        }
                    }
                }
                equation=equation+s1+symbol+s2+"=";//表达式
                Again[i][0]=equation;
                for(int k=0;k<(i+1);k++)//避免重复
                {
                    if(Again[i][0].equals(Again[k][0]))
                    {
                        k--;break;
                    }
                }
                System.out.println(equation);
                }
            }  
        public static void main(String args[])
        {
            String p3="Y";
            @SuppressWarnings("resource")
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入定制数量:");
            int size=sc.nextInt();
            System.out.println("是否有乘除法,有(Y),没有(N)");
            String p1=sc.next();
            System.out.println("加减有无负数,有(Y),没有(N)");
            String p2=sc.next();
            if(p1.equals("Y"))
            {
                System.out.println("除法有无余数,有(Y),没有(N)");
                p3=sc.next();
            }
            System.out.println("请输入数值范围最大值:");
            int max=sc.nextInt();
            System.out.println("请输入数值范围最小值:");
            int min=sc.nextInt();        
            int a=SIZE(size);
            int b=SecondOperation(p1) ;
            String c=Negative(p2);
            String d=Remainder(p3);
            int e=Max(max);
            int f=Min(min);
            
            Display(a,b,c,d,e,f);//函数的调用,实现
        }
    }

    结果截图:

    有乘除法,加减有负数,除法有余数

    有乘除法,加减无负数,除法有余数

    有乘除法,加减无负数,除法无余数

    五乘除法,加减有负数

    无乘除法,加减无负数

  • 相关阅读:
    Linux中的计算器(bc)
    在Linux中显示日历(cal)
    在Linux中显示日期(date)
    Linux中的注销当前用户
    Linux中的提示符
    在Linux中启动X Window
    硬盘知识
    划分Linux分区
    Linux中的关机
    hdu4424 Conquer a New Region 并查集/类似最小生成树
  • 原文地址:https://www.cnblogs.com/mengqimoli/p/5323754.html
Copyright © 2011-2022 走看看