软件工程个人作业02
Posted 风韵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程个人作业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 |
以上是关于软件工程个人作业02的主要内容,如果未能解决你的问题,请参考以下文章