软件工程个人作业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 语句出现逻辑错误,后来发现及时改正。

时间: 2024-08-03 08:33:38

软件工程个人作业02(四则运算2)的相关文章

软件工程结对作业02(借鉴版)

软件工程结对作业02(借鉴版) 在编写程序的时候因为不会将Java程序嵌入进jsp中所以借鉴了一个学姐的程序,下面是学姐的程序.但在对学姐程序就行修改时发现了一些问题: 在Newjsp中能调用html中的题目个数的参数 在Myjsp中不能调用html中的题目个数的参数 其中这个参数timugeshu,是我自己后来添加的,用来改变题目个数的,与Java程序无关,只在jsp文件中作用 源程序: NewFeil.html <!DOCTYPE html> <html> <head&g

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

四则运算作业02 import javax.swing.JOptionPane; import java.util.Random; import java.util.Scanner; public class Arithmetic { public static void main(String[] args) { // TODO 自动生成的方法存根 int c;//选择 int c1,c4,c5,c6,c7,c8; int a,b,d1;//二位数运算 int c2,c3; int e=0;/

软件工程概论作业02

这周,我们上了软件工程概论第三节课,终于体会到的程序员的不易,作业一次比一次难,老师提出的要求越来越多,就像未来的客户一样,要求永远无止境. 这次还在上次的要求上提出了新的要求,要求可选择整数还是分数,可指定范围,不可重复. 可怜的二柱子同学,老师又对他的自动出题系统提出了新的要求: 可以控制下列参数: 是否有乘除法: 是否有括号(最多可以支持十个数参与计算): 数值范围: 加减有无负数: 除法有无余数! 日期 开始时间 结束时间 中断时间 净时间 活动 备注 C U 3/10 14:00 16

软件工程结对作业02(原创版)

一.设计思路 1.在HTML文件中写题目选择项 2.输入一个数控制题目个数 3.输入一个数控制取值范围(小于100) 4.输入一个数控制参数个数 5.选择是否有乘除法数 6.在有乘除法时,选择是否有余法 7.选择是否有括号 8.点击提交按钮,通过一个链接进入jsp文件,并且用户在HTML输入的参数传到jsp 页面 9.调用java函数,输出题目 10.点击开始答题之后,进入下一个jsp页面,用户答题并显示用户答题情况 二.源代码: HTML文件 <!DOCTYPE html PUBLIC "

软件工程结队作业02

设计思想:    使用jsp实现java代码与网页的连接,利用数组实现数据的传输.Session对象页面的跳转功能. 源代码: 运行结果截图: 编程总结: 对jsp和session的使用不熟悉,不知道如何将java代码插入到网页程序中,所以参考了网上代码进行编写. 周活动总结表 姓名:杜若憧                            日期 2016/4/8 听课 编写代码 阅读课本 准备考试 日总计 周日 周一 50 50 周二 100 60 160 周三 22 22 周四 30 3

软件工程个人作业02

设计思想:采用随机数来决定是否右括号,计算结果用到递归方法,先对运算符中的乘除进行计算,在进行加减计算,在输出结果. 源程序代码:(未完成) package 四则运算; import java.util.Random; import java.util.*; public class Sizeyunsuan2 { public static void main(String[] args) { int m = 0; int n = 0; Scanner scan = new Scanner(Sy

软件工程概论-作业02

1.要求:写一个能自动生成三十道小学四则运算题目的 "软件",要求:除了整数以外,还要支持真分数的四则运算.题目避免重复.可定制出题的数量. 2.思路: 1)产生随机数choose,1或2,1表示生成整数表达式,2表示生成分数表达式,并用一个字符串数组存储表达式便于打印输出(长度由用户输入): 2)用一个字符数组存储"+ - * ÷"等符号,取符号则生成随机数0-3: 3)若choose为1,random生成两个整数作为表达式的左操作数和右操作数,并随机产生操作符:

软件工程结对作业02

import java.util.Scanner; class Fraction//分数 { public int numerator;//分子 public int denominator;//分母 public void creatFraction() { //--生成值并化简-- boolean bool=false; while(bool==false) { int up=(int)(1+Math.random()*10); int down=(int)(1+Math.random()*

软件工程个人作业02——PSP0级要求记录

项目计划日志: 没有累计时间,所以没有累计时间. 时间记录日志: 缺陷记录日志: