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. postman接口测试笔记

    1.GET 和POST 的区别: GET 使用URL 或Cookie 传参,而POST将数据放在Body 中. GET的URL 在长度上会有限制,而POST没有. POST比GET相对安全,因为在地址 ...

  2. python--协程之特别篇

    Python通过yield提供了对协程的基本支持,但是不完全.而第三方的gevent为Python提供了比较完善的协程支持. gevent是第三方库,通过greenlet实现协程,其基本思想是: 当一 ...

  3. jq选择器(jq 与 js 互相转换),jq操作css样式 / 文本内容, jq操作类名,jq操作全局属性,jq获取盒子信息,jq获取位置信息

    jq选择器(jq 与 js 互相转换) // 获取所有的页面元素jq对象 $('css3选择器语法'); var $box = $(".box:nth-child(1)"); 获取 ...

  4. 基于jeesite的cms系统(四):使用Beetl模版引擎在后端渲染数据

    一.Beetl简介 1. 什么是Beetl Beetl目前版本是2.9.3,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点.使得开发和维护模板有很好的体验. ...

  5. Python利用pandas处理Excel数据的应用

    Python利用pandas处理Excel数据的应用   最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做 ...

  6. java中import详解

    前言 import与package机制相关,这里先从package入手,再讲述import以及static import的作用. package package名称就像是我们的姓,而class名称就像 ...

  7. 开源mall学习

    https://github.com/macrozheng/mall 学习知识点 1.Spring Security 2.@Aspect 3.logstash 4. es crud templete ...

  8. AXI4 STREAM DATA FIFO

    参考:http://www.xilinx.com/support/documentation/ip_documentation/axis_infrastructure_ip_suite/v1_1/pg ...

  9. Day 18: 记filebeat内存泄漏问题分析及调优

    ELK 从发布5.0之后加入了beats套件之后,就改名叫做elastic stack了.beats是一组轻量级的软件,给我们提供了简便,快捷的方式来实时收集.丰富更多的数据用以支撑我们的分析.但由于 ...

  10. docker简单介绍----docker仓库的应用

    docker hub:主要用来存储docker镜像的仓库 docker默认提供了一个docker仓库,我们也可以自建私有仓库或者使用第三方的docker仓库来pull或者push镜像 这里我们以阿里云 ...