软件工程个人作业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(System.in);
        System.out.println("请输入题目中需要参与计算的数字个数(大于2但不要超过10个):");
        m = scan.nextInt();
        if (m > 1&& m < 11) {
            System.out.println("请输入需要生成的题目的数量:");
            n = scan.nextInt();
            shengcheng(m, n);
        } else
            System.out.println("超出范围!请重新输入!");
        main(args);
    }

    public static void shengcheng(int m, int n) {
        int[] shu = new int[m];
        String[] fuhao = new String[m - 1];
        System.out.println("生成的题目如下:");
        for (int i = 0; i < n;) {
            int panduan = new Random().nextInt(2);
            if (panduan == 0) {
                shu = shu(m);
                fuhao = fuhao(m - 1);
                for (int x = 0; x < m -1;) {
                    System.out.print(shu[x]);
                    if (fuhao[x] == "/" && shu[x + 1] == 0) {
                        fuhao[x]="+";
                    }
                    System.out.print(fuhao[x]);
                    x++;
                }
                System.out.println(shu[shu.length-1]+"="+"        答案:" + jisuan(shu, fuhao));
            } else if (panduan == 1) {
                shu = shu(m);
                int weizhi1 = new Random().nextInt(shu.length - 1);
                int weizhi2 =-weizhi1+ new Random().nextInt(shu.length - weizhi1-1) +1;
                fuhao = fuhao(m - 1);
                for (int x = 0; x < m;) {
                    if (x!=weizhi1&&x<m-1) {
                    System.out.print(shu[x]);
                    if (fuhao[x] == "/" && shu[x + 1] == 0) {
                        fuhao[x]="+";
                    }
                    System.out.print(fuhao[x]);
                    }
                    else if (x== weizhi1) {
                        System.out.print("("+shu[x]);
                        if (fuhao[x] == "/" && shu[x + 1] == 0) {
                            fuhao[x]="+";
                        }
                        System.out.print(fuhao[x]);
                    }
                    else if (x ==weizhi2&&x<m-1) {
                        System.out.print(shu[x]+")"+fuhao[x]);
                    }
                    else if (x ==weizhi2&&x==m-1) {
                        System.out.print(shu[x]+")");
                    }
                    x++;
                }
                System.out.print("=");
                int[] shu2 = new int[weizhi2 - weizhi1 + 1];
                String[] fuhao2 = new String[shu2.length - 1];
                shu2[0] = shu[weizhi1];
                for (int a = 1; a < shu2.length;) {
                    shu2[a] = shu[weizhi1 + i];
                    fuhao2[a - 1] = fuhao[weizhi1];
                    a++;
                }
                int jieguo = jisuan(shu2, fuhao2);
                shu[weizhi1] = jieguo;
                for (int x = weizhi1 + 1; x < shu.length - 1;) {
                    shu[x] = shu[x + 1];
                    x++;
                }
                for (int x = weizhi1 + 1; x < shu.length - 2;) {
                    fuhao[x] = fuhao[x + 1];
                    x++;
                }
                System.out.println("        答案:" + jisuan(shu, fuhao));
            }
            i++;
        }
    }

    public static int[] shu(int x) {
        int[] shu = new int[x];
        for (int i = 0; i < x;) {
            shu[i] = new Random().nextInt(100);
            i++;
        }
        return shu;
    }

    public static String[] fuhao(int x) {
        String fh[] = { "+", "-", "*", "/" };
        String[] fuhao = new String[x];
        for (int i = 0; i < x;) {
            int n = new Random().nextInt(4);
            fuhao[i] = fh[n];
            i++;
        }
        return fuhao;
    }

    public static int jisuan(int[] shu, String[] fuhao) {
        int[] shu1=new int[shu.length-1];
        String[] fuhao1=new String[fuhao.length-1];
        if (fuhao.length > 1) {
            int n = 0;
            for (int i = 0; i < fuhao.length;) {
                if (fuhao[i] == "*") {
                    n = shu[i] * shu[i + 1];
                    for (int x = 0; x <=fuhao.length;) {
                       if(x<i){
                        shu1[x]=shu[x];
                        fuhao1[x]=fuhao[x];
                       }
                       else if(x==i){
                           shu1[x]=n;
                           fuhao1[x]=fuhao[x+1];
                       }
                       else if(x>i&&x<fuhao.length-1){
                           shu1[x]=shu[x+1];
                           fuhao1[x]=fuhao[x+1];
                       }
                       else if(x>i&&x==fuhao.length-1){
                           shu1[x]=shu[x+1];
                       }
                       x++;
                       }
                  }
                else if (fuhao[i] == "/") {
                    n = shu[i] / shu[i + 1];
                    for (int x = 0; x <=fuhao.length;) {
                           if(x<i){
                            shu1[x]=shu[x];
                            fuhao1[x]=fuhao[x];
                           }
                           else if(x==i){
                               shu1[x]=n;
                               fuhao1[x]=fuhao[x+1];
                           }
                           else if(x>i&&x<fuhao.length-1){
                               shu1[x]=shu[x+1];
                               fuhao1[x]=fuhao[x+1];
                           }
                           else if(x>i&&x==fuhao.length-1){
                               shu1[x]=shu[x+1];
                           }
                           x++;
                        jisuan(shu1, fuhao1);
                    }
                    i++;
                }
                for (int b = 0; b < fuhao.length;) {
                    if (fuhao[b] == "+") {
                        n = shu[b] + shu[b + 1];
                        for (int x = 0; x <=fuhao.length;) {
                               if(x<i){
                                shu1[x]=shu[x];
                                fuhao1[x]=fuhao[x];
                               }
                               else if(x==i){
                                   shu1[x]=n;
                                   fuhao1[x]=fuhao[x+1];
                               }
                               else if(x>i&&x<fuhao.length-1){
                                   shu1[x]=shu[x+1];
                                   fuhao1[x]=fuhao[x+1];
                               }
                               else if(x>i&&x==fuhao.length-1){
                                   shu1[x]=shu[x+1];
                               }
                               x++;
                        }
                    }
                    else if (fuhao[b] == "-") {
                        n = shu[b] - shu[b + 1];
                        for (int x = 0; x <=fuhao.length;) {
                               if(x<i){
                                shu1[x]=shu[x];
                                fuhao1[x]=fuhao[x];
                               }
                               else if(x==i){
                                   shu1[x]=n;
                                   fuhao1[x]=fuhao[x+1];
                               }
                               else if(x>i&&x<fuhao.length-1){
                                   shu1[x]=shu[x+1];
                                   fuhao1[x]=fuhao[x+1];
                               }
                               else if(x>i&&x==fuhao.length-1){
                                   shu1[x]=shu[x+1];
                               }
                               x++;
                            jisuan(shu1, fuhao1);
                        }
                    }
                    b++;
                }
            }
        }
        else if (fuhao.length == 1) {
            if (fuhao[0] == "+") {
                shu[0] = shu[1] + shu[0];
            }
            if (fuhao[0] == "-") {
                shu[0] = shu[1] - shu[0];
            }
            if (fuhao[0] == "*") {
                shu[0] = shu[1] * shu[0];
            }
            if (fuhao[0] == "/") {
                shu[0] = shu[1] / shu[0];
            }
        }
        int jieguo = shu[0];
        return jieguo;
    }
}

结果总结:在除法运算中,本来是想如果除号后为零则将除号换成加号,但是这将会导致输出的式子与结果不一致,符号不能替换后再输出。

学生   胡泽杰

日期   17/3/12

教员   王建明

程序    四则运算题目生成器


日期


编号


类型


引入阶段


排除阶段


修复时间


修复缺陷


3/5


1


四则运算


编码


编译


30min


描述:能进行简单计算,可以化简并且输出分数结果


3/10


2


四则运算


编码


编译


2h


描述:能输出多个数进行计算,但是不能进行分数的计算,进去额度不够


3/12


3


四则运算


编码


编译


3h


描述:加入了括号,但是输出易出错,也不能判断除号后数是否为0

时间: 2024-08-26 01:23:49

软件工程个人作业02的相关文章

软件工程结对作业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(四则运算2)

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

软件工程结对作业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级要求记录

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

软件工程概论-作业02

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