Java结对编程四则运算(二)


一.题目描述及要求

Git提交粒度不要太粗,建议一个文件/一个类/一个函数/一个功能/一个bug修复都进行提交,不能一天提交一次,更不能一周一次,参考Commit Message的编写(www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html)
Git提交日志需保证有意义,如果整个项目持续使用无意义的提交日志,这里会是一个扣分项,如之前作业中的:
weekxxx
Pxxx代码
纯数字类名:1.2
日期:0409
只写文件名)


二.需求分析

挖掘真实需求:此程序是给小学生准备的四则运算,包括加减乘除、括号和真分数,同时可扩展多语言选择,生成文件,去重等功能。
提出解决方案:为了使程序有更强的可操作性,选择采用开-闭原则,因为如果以后想要增加开根号、幂次等运算,可以不用动整个程序,直接添加新的类就好。
筛查和验证方案

三.实验步骤。

组内商讨项目完成计划
预估项目各个环节完成时间
简要写出需求分析
简单规定组内成员的代码规范
设计UML类图

四.代码编译

import java.util.;
import java.io.
;
import java.lang.;
import static java.lang.System.out;
public class Main {
public static void main(String[] args) throws IOException {
StringTokenizer tokenizer1 = null, tokenizer2 = null;//创建StringTokenizer对象作分隔标记
String token1, token2, token3, token4;
String s1 = null;
String str;
int rightnum = 0, count = 0;
float rate;
int n,q = 0,choose;
String expr;
CreateQuestion creque = new CreateQuestion();
PrintStream ps = new PrintStream("Exercises.txt"); //创建Exercises.txt
Calculation cal = new Calculation();//创建一个Calculation的对象cal
ChangeSuffix cs = new ChangeSuffix();//创建一个ChangeSuffix的对象cs
FileInputStream fis = new FileInputStream("Exercises.txt");//创建指向Exercises.txt文件的输入流
InputStreamReader isr = new InputStreamReader(fis); //将isr定义为fis的上转型对象
BufferedReader in = new BufferedReader(isr); //创建BufferedReader流读取文本行
Scanner scan = new Scanner(System.in);
CreateQuestion cq = new CreateQuestion();
System.out.println("输入0为中文版~Input 1 is English version~輸入2為簡體中文");//选择语言
choose = scan.nextInt();//choose的数值对应不同的语言
Locale locale;
ResourceBundle res = null;
switch (choose){
case 0:
locale=new Locale("zh","CN");
res= ResourceBundle.getBundle("message",locale);
break;
case 1:
locale=new Locale("en","US");
res= ResourceBundle.getBundle("message",locale);
break;
case 2:
locale=new Locale("ft","CN");
res= ResourceBundle.getBundle("message",locale);
break;
default:System.out.println("选择错误!~Wrong Choose!~選擇錯誤 !");
System.exit(0);
}
while(true)
{
System.out.print(res.getString("b"));
n = scan.nextInt();
System.out.println(" ");
if (n > 0) {
for (int i = 0; i < n; i++) {
//生成题目
int a;
a = i + 1;
expr = cq.getQuestion();
String s = res.getString("c") + a + ":" + expr + " =";
System.out.println(s);
ps.println(s);
}
ps.close();
break;
} else {
System.out.println(res.getString("d"));
}
//iof.close();
//ps.close();
}
Process p=null;
try {
p=Runtime.getRuntime().exec("notepad.exe Exercises.txt");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(res.getString("e"));
String dd = scan.next();
if(dd.equals("Y")) {
PrintStream ps2 = new PrintStream("ExercisesResult.txt");//创建ExercisesResult.txt
while ((str = in.readLine()) != null) { //从Exercises.txt文件中读入文本行,文件中每个题目都是一行,且形式都为“题目n:表达式 =答案”。
tokenizer1 = new StringTokenizer(str, ":");//以":"作为分隔标记
token1 = tokenizer1.nextToken();//将":"前的内容赋给token1(“题目n”)
token2 = tokenizer1.nextToken();//将":"后的内容赋给token2(“表达式 =答案”)
tokenizer2 = new StringTokenizer(token2, "=");//以"="作为分隔标记
token3 = tokenizer2.nextToken();//将"="前的内容赋给token3(“表达式”)
token4 = tokenizer2.nextToken();//将"="后的内容赋给token4(“答案”)
//cs.toSuffix(token3);//将token3转化为后缀表达式
if (token4.equals(cal.evaluate(cs.toSuffix(token3)))) {//判断输入答案是否等于计算结果
s1 = res.getString("f");
rightnum++;
} else {
s1 = res.getString("g") + cal.evaluate(cs.toSuffix(token3));
}
String s2 = str + "\n" + s1;
System.out.println(s2);
ps2.println(s2);//将题目及判断结果写入到ExercisesResult.txt文件中
count++;
}
rate = (float) rightnum / count
100;
String s3 = (res.getString("h") + count + res.getString("i") + rate + "%");//计算题目数目及正确率,将正确率转化为百分数。
System.out.println(s3);
ps2.println(s3);
}
else System.out.println(res.getString("j"));
}
}

五.总结

这次由于忘记提交时间,所以非常赶,没有来得及运行。向同学匆匆请教了本次实验的步骤与代码进行研究学习,看懂了同学代码,通过询问,由同学答应使用其代码,故能提交,另外这次由于电脑原因,难以运行,与他们进行共同学习。

20175305张天钰Java结对编程四则运算(二)的更多相关文章

  1. 20175305张天钰Java结对编程四则运算

    Java结对编程四则运算 一.题目描述:如何对表达式进行求值运算呢 1.中缀表达式与后缀表达式(娄老师讲解) 中缀表达式就是运算符号在运算数中间的表达式,比如1+2,顾名思义,后缀表达式就是运算符在运 ...

  2. Java结对编程四则运算一周小结

    Java结对编程四则运算一周小结 需求分析 对于四则运算来说最主要的就是要计算出产生的式子(字符串的形式). 设计思路 总体可将这个项目分解为几个部分:产生式子,计算式子,判断对错并记录: 具体的思路 ...

  3. 20175226 2018-2019-2《java程序设计》结对编程-四则运算(第一周-阶段总结)

    结对编程-四则运算(第一周-阶段总结) 需求分析 实现一个四则运算程序,要求: 自动随机生成小学四则运算题目(加,减,乘,除) 支持整数.真分数且支持多项式 能够利用栈的思想,将中缀转换为后缀表达式 ...

  4. 结对编程--四则运算(Java)萧英杰 夏浚杰

    结对编程--四则运算(Java)萧英杰 夏浚杰 Github项目地址 功能要求 题目:实现一个自动生成小学四则运算题目的命令行程序 使用 -n 参数控制生成题目的个数(实现) 使用 -r 参数控制题目 ...

  5. 结对编程--四则运算(Java)梅进鹏 欧思良

    结对编程--四则运算(Java)梅进鹏 欧思良 Github项目地址:https://github.com/MeiJinpen/Arithmetic 功能要求 题目:实现一个自动生成小学四则运算题目的 ...

  6. 王译潇20162314 实验报告三plus结对编程四则运算第一阶段

    北京电子科技学院BESTI实验报告 课程:程序设计与数据结构 班级: 1623 姓名: 王译潇 学号:20162314 指导教师:娄佳鹏老师.王志强老师 实验日期:2017年5月12号 实验密级: 非 ...

  7. Java结对编程之挑战出题

    Java结对编程之挑战出题 需求分析 需求 对于挑战出题来说最主要的就是要产生的式子并将重复的式子去掉. 设计思路 具体的思路: 思路一: 原先我打算用集合中的元素的不重复性进行去重,这种思路的好处就 ...

  8. [Java并发编程(二)] 线程池 FixedThreadPool、CachedThreadPool、ForkJoinPool?为后台任务选择合适的 Java executors

    [Java并发编程(二)] 线程池 FixedThreadPool.CachedThreadPool.ForkJoinPool?为后台任务选择合适的 Java executors ... 摘要 Jav ...

  9. 20145302张薇《Java程序设计》实验二报告

    20145302张薇<Java程序设计>实验二:Java面向对象程序设计 使用TDD的方式设计实现复数类:Complex 测试代码 import org.junit.Test; publi ...

随机推荐

  1. 二周工作总结(php方向)

    前言:年后回来在忙着换工作,最终拿到了三家的offer,最后权衡去了一家实业公司做oa系统的开发,刚入职做一些技术的总结同时记录自己的技术进步 (一) 用mysql视图实现多个表之间的联查 优点:在实 ...

  2. vue开发常用配置

    // src/main.js function setHtmlFontSize() { const baseSize = 100 // 由于浏览器字体最小为12px,故这个值要设置大一点,保证计算所得 ...

  3. Java虚拟机—垃圾收集器(整理版)

    1.概述 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现.Java虚拟机规范中对垃圾收集器应该如何实现并没有规定,因此不同的厂商.不同版本的虚拟机所提供的垃圾收集器都可能会有很 ...

  4. js循环内0.5s停止

    var time_begin = new Date().getTime(); while(true){ if(new Date().getTime()-time_begin > 500) bre ...

  5. AIC与BIC

    首先看几个问题 1.实现参数的稀疏有什么好处? 一个好处是可以简化模型.避免过拟合.因为一个模型中真正重要的参数可能并不多,如果考虑所有的参数作用,会引发过拟合.并且参数少了模型的解释能力会变强. 2 ...

  6. ueditor接入秀米编辑器

    秀米编辑器用来编辑微信页面很方便,功能也比较强大.秀米提供了第三方编辑器接入的功能,接入方法可以参照官网示例:http://hgs.xiumi.us/uedit/ 但是这里有几点要注意: 1. 示例中 ...

  7. “放到桌面”的Servlet实现

    复习下Servlet下载文件, 当response把ContentType设置成application/xxxx的时候呢,浏览器会默认启动下载,而不是试图打开. 通过给httpHeader里面加入内容 ...

  8. 论文翻译:BinaryNet: Training Deep Neural Networks with Weights and Activations Constrained to +1 or −1

    目录 摘要 引言 1.BinaryNet 符号函数 梯度计算和累积 通过离散化传播梯度 一些有用的成分 算法1 使用BinaryNet训练DNN 算法2 批量标准化转换(Ioffe和Szegedy,2 ...

  9. redis集群伸缩【转】

    一:实验介绍 在不影响集群对外服务的情况下,可以为集群添加节点进行扩容,也可以下线部分节点进行缩容. 原理可以抽象为槽和对应数据在不同节点之间灵活移动. 如果希望加入一个节点来实现集群扩容时,需要通过 ...

  10. 爬虫 selenium+Xpath 爬取动态js页面元素内容

    介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如 ...