软件工程个人作业02(四则运算2)

    题目要求:

  是否有乘除法;
  是否有括号(最多可以支持十个数参与计算);
  数值范围;
  加减有无负数;
  除法有无余数!
    四则运算2的设计思想:因为题目要求可以选择是否有除法,是否有括号,加减有无负数,除法有无余数。所以这里考虑用if~~else语句来进行选择。目前程序无法完成生成题目是否有括号的要求。
    源程序代码:

import java.util.Random;
import java.util.Scanner;


public class sizeyunsuan2 {
/*是否有乘除法;
是否有括号(最多可以支持十个数参与计算);
数值范围;
加减有无负数;
除法有无余数!*/
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
char a1[]=new char[4];
a1[0]='+';
a1[1]='-';
a1[2]='x';
a1[3]='÷';
char a2[]=new char[2];
a2[0]='+';
a2[1]='-';
Random random=new Random();
System.out.println("******小学生四则运算题目自动生成系统—整数部分—>******");
System.out.println("运算是否需要包含乘法与除法?(1:是,0:否)");
int flag1=in.nextInt();//是否包含乘除法
System.out.println("加减有无负数?1:是,0:否");
int flag2=in.nextInt();//加减有无负数
System.out.println("请输入运算数的范围(即运算数最大能是多少:)");
int range=in.nextInt();//题目运算数范围
System.out.println("请输入所需题目个数:");
int number=in.nextInt();
if(flag1==0)//无乘除法 a2
{
    if(flag2==1)//不含乘除法,加减有负数
    {
        for(int i=0;i<number;i++)
        {
            
            int a=random.nextInt(2*range);
            int b=random.nextInt(2*range);
            
            System.out.print("(");
            System.out.print(range-a);
            System.out.print(")");
            System.out.print(a2[(int) (Math.random()*2)]);
            System.out.print("(");
            System.out.print(range-b);
            System.out.println(")"+"=");
            
        }
    }
    else if(flag2==0) //不含乘除法,加减无负数
    {
        for(int i=0;i<number;i++)
        {
        int a=random.nextInt(range);
        int b=random.nextInt(range);
        System.out.print("(");
        System.out.print(range-a);
        System.out.print(")");
        System.out.print(a2[(int) (Math.random()*2)]);
        System.out.print("(");
        System.out.print(range-b);
        System.out.println(")"+"=");
        }
    }
}
else if(flag1==1)//有乘除法
{
    System.out.print("乘除有无余数?1:是,0:否");
    int flag3=in.nextInt();//乘除有无余数
    if(flag2==1)//加减有负数
    {
        if(flag3==1)//乘除有余数
        {
            for(int i=0;i<number;i++)
            {
                
                int a=random.nextInt(2*range);
                int b=random.nextInt(2*range);
                
                System.out.print("(");
                System.out.print(range-a);
                System.out.print(")");
                System.out.print(a1[(int) (Math.random()*4)]);
                System.out.print("(");
                System.out.print(range-b);
                System.out.println(")"+"=");
                
            }
        }
        else if(flag3==0)//乘除无余数 ,加减有负数  
        {
            for(int i=0;i<number;i++)
            {
                int a=random.nextInt(2*range);
                int b=random.nextInt(2*range);
                while((range-b)==0||(range-a)%(range-b)!=0)
                {
                    a=random.nextInt(2*range);
                    b=random.nextInt(2*range);
                }
                System.out.print("(");
                System.out.print(range-a);
                System.out.print(")");
                System.out.print(a1[(int) (Math.random()*4)]);
                System.out.print("(");
                System.out.print(range-b);
                System.out.println(")"+"=");
            }
        }
    }
    else if(flag2==0)//有除法,加减无负数 
    {
        if(flag3==1)//有余数
        {
            
            for(int i=0;i<number;i++)
        {
            int a=random.nextInt(range);
            int b=random.nextInt(range);
            
            System.out.print("(");
            System.out.print(a);
            System.out.print(")");
            System.out.print(a1[(int) (Math.random()*4)]);
            System.out.print("(");
            System.out.print(b);
            System.out.println(")"+"=");
        }    
    }
        else if(flag3==0)//无余数
        {
            for(int i=0;i<number;i++)
            {
                int a=random.nextInt(range);
                int b=random.nextInt(range);
                while(b==0||a%b!=0)//判断加减无负数,乘除无余数
                {
                    a=random.nextInt(range);
                    b=random.nextInt(range);
                }
                System.out.print("(");
                System.out.print(a);
                System.out.print(")");
                System.out.print(a1[(int) (Math.random()*4)]);
                System.out.print("(");
                System.out.print(b);
                System.out.println(")"+"=");
            }
        }
    }
    
}
else 
{System.out.println("输入有误!!");}

System.out.println("********小学生四则运算题目自动生成系统—分数部分—>*********");
System.out.print("是否需要乘除法?1:是,0:否");
int flag4=in.nextInt();
System.out.print("加减有无负数?1:是,0:否");
int flag5=in.nextInt();
System.out.print("请输入数值范围:(即最大的数字是多少)");
int range1=in.nextInt();
System.out.print("请输入题目数量:");
int number1=in.nextInt();
if(flag4==1)//有乘除法
{
    if(flag5==1)//加减有负数
    {
        for(int i=0;i<number1;i++)
        {
        int a=random.nextInt(2*range1);
        int b=random.nextInt(range1);
        int c=random.nextInt(2*range1);
        int d=random.nextInt(range1);
        while(range1-a==0||range1-b==0||range1-c==0||range1-d==0)
        {
            a=random.nextInt(2*range1);
            b=random.nextInt(2*range1);
            c=random.nextInt(2*range1);
            d=random.nextInt(2*range1);
        }
        System.out.print("("+(range1-a));
        System.out.print("/");
        System.out.print(range1-b+")");
        System.out.print(a1[(int) (Math.random()*4)]);
        System.out.print("("+(range1-c));
        System.out.print("/");
        System.out.println(range1-d+")=");
        }
        
        
        
    }
    else if(flag5==0)//加减无负数
    {
        
        for(int i=0;i<number1;i++)
        {
        int a=random.nextInt(range1);
        int b=random.nextInt(range1);
        int c=random.nextInt(range1);
        int d=random.nextInt(range1);
        while(a==0||b==0||c==0||d==0)
        {
            a=random.nextInt(range1);
            b=random.nextInt(range1);
            c=random.nextInt(range1);
            d=random.nextInt(range1);
        }
        System.out.print("("+a+"/");
        System.out.print(b+")");
        System.out.print(a1[(int) (Math.random()*4)]);
        System.out.print("("+c);
        System.out.print("/");
        System.out.println(d+")=");
        }
                
    }
}
else if(flag4==0)//无乘除法
{
    if(flag5==1)//加减有负数
    {
        
        for(int i=0;i<number1;i++)
        {
        int a=random.nextInt(2*range1);
        int b=random.nextInt(2*range1);
        int c=random.nextInt(2*range1);
        int d=random.nextInt(2*range1);
        while(range1-a==0||range1-b==0||range1-c==0||range1-d==0)
        {
            a=random.nextInt(2*range1);
            b=random.nextInt(2*range1);
            c=random.nextInt(2*range1);
            d=random.nextInt(2*range1);
        }
        System.out.print("("+(range1-a));
        System.out.print("/"+(range1-b)+")");
        System.out.print(a2[(int) (Math.random()*2)]);
        System.out.print("("+(range1-c));
        System.out.print("/"+(range1-d));
        System.out.println(")=");
        }
        
    }
    else if(flag5==0)//加减无负数
    {
        
        for(int i=0;i<number1;i++)
        {
        int a=random.nextInt(range1);
        int b=random.nextInt(range1);
        int c=random.nextInt(range1);
        int d=random.nextInt(range1);
        while(b==0||d==0)
        {
            b=random.nextInt(range1);
            d=random.nextInt(range1);
        }
        if(a==0||c==0)
        {
            a=random.nextInt(range1);
            c=random.nextInt(range1);
        }
        
        System.out.print("("+a);
        System.out.print("/"+b+")");
        System.out.print(a2[(int) (Math.random()*2)]);
        System.out.print("("+c);
        System.out.print("/"+d);
        System.out.println(")=");
        }
    }
}
    






    }

}

运行结果截图:

   

 

   

 项目计划日志:

日期/任务

听课

阅读课本

课下学习

 

日总计

周日3.5

 

 

 

 

 

周一

120m

30m

30m

 

150m

周二

 

 

40m

 

40m

周三

 

 

30m

 

30m

周四

120m

40m

20m

 

180m

周五

 

 

30m

 

30m

周六

 

 

40m

 

40m

周总计

240m

70m

190m

 

520m

时间记录日志:

日期

开始时间

结束时间

中断时间

净时间

活动

备注

C

U

3.6

14:00

16:00

10m

110m

上课,编程

软件工程课

 

 

3.7

19:00

21:00

20m

100m

看书,编程

写软件工程作业

 

 

3.8

19:00

21:00

15m

105m

看书,编程

学javaweb

 

 

3.9

16:00

18:00

10m

110m

上课

Javaweb上课

 

 

3.10

18:00

20:00

30m

90m

构思,写java

写四则运算程序

 

 

缺陷记录日志:

3/10:if~else 语句出现逻辑错误,后来发现及时改正。

posted @ 2017-03-10 21:34  Java民工陆小凤  阅读(266)  评论(0编辑  收藏  举报