20175305张天钰Java结对编程四则运算(二)
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结对编程四则运算(二)的更多相关文章
- 20175305张天钰Java结对编程四则运算
Java结对编程四则运算 一.题目描述:如何对表达式进行求值运算呢 1.中缀表达式与后缀表达式(娄老师讲解) 中缀表达式就是运算符号在运算数中间的表达式,比如1+2,顾名思义,后缀表达式就是运算符在运 ...
- Java结对编程四则运算一周小结
Java结对编程四则运算一周小结 需求分析 对于四则运算来说最主要的就是要计算出产生的式子(字符串的形式). 设计思路 总体可将这个项目分解为几个部分:产生式子,计算式子,判断对错并记录: 具体的思路 ...
- 20175226 2018-2019-2《java程序设计》结对编程-四则运算(第一周-阶段总结)
结对编程-四则运算(第一周-阶段总结) 需求分析 实现一个四则运算程序,要求: 自动随机生成小学四则运算题目(加,减,乘,除) 支持整数.真分数且支持多项式 能够利用栈的思想,将中缀转换为后缀表达式 ...
- 结对编程--四则运算(Java)萧英杰 夏浚杰
结对编程--四则运算(Java)萧英杰 夏浚杰 Github项目地址 功能要求 题目:实现一个自动生成小学四则运算题目的命令行程序 使用 -n 参数控制生成题目的个数(实现) 使用 -r 参数控制题目 ...
- 结对编程--四则运算(Java)梅进鹏 欧思良
结对编程--四则运算(Java)梅进鹏 欧思良 Github项目地址:https://github.com/MeiJinpen/Arithmetic 功能要求 题目:实现一个自动生成小学四则运算题目的 ...
- 王译潇20162314 实验报告三plus结对编程四则运算第一阶段
北京电子科技学院BESTI实验报告 课程:程序设计与数据结构 班级: 1623 姓名: 王译潇 学号:20162314 指导教师:娄佳鹏老师.王志强老师 实验日期:2017年5月12号 实验密级: 非 ...
- Java结对编程之挑战出题
Java结对编程之挑战出题 需求分析 需求 对于挑战出题来说最主要的就是要产生的式子并将重复的式子去掉. 设计思路 具体的思路: 思路一: 原先我打算用集合中的元素的不重复性进行去重,这种思路的好处就 ...
- [Java并发编程(二)] 线程池 FixedThreadPool、CachedThreadPool、ForkJoinPool?为后台任务选择合适的 Java executors
[Java并发编程(二)] 线程池 FixedThreadPool.CachedThreadPool.ForkJoinPool?为后台任务选择合适的 Java executors ... 摘要 Jav ...
- 20145302张薇《Java程序设计》实验二报告
20145302张薇<Java程序设计>实验二:Java面向对象程序设计 使用TDD的方式设计实现复数类:Complex 测试代码 import org.junit.Test; publi ...
随机推荐
- python验证卡普耶卡(D.R.Kaprekar)6174猜想
1955年,卡普耶卡(D.R.Kaprekar)对4位数字进行了研究,发现一个规律: 对任意各位数字不相同的4位数,使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个操作,最终会得到61 ...
- ArcGis——好好的属性表,咋就乱码了呢?
我就瞎说一下,反正你也不懂. ——见到许多ArcGis属性表乱码的问题,也见过各种哭笑不得的解说 目录 第一节 字符编码那些事儿→字符编码简述 第二节 都是编码惹的祸→ArcGis属性表出错原因 第三 ...
- 图解TCP/IP
序言 ----
- Storage 001 电商数据库设计
[大概流程 ]用户登录 > 选购商品 > 加入购物车 > 检查库存 >提交订单 > 选择在线支付 或 选择货到付款 > 发货 [用户模块]注册 登陆 [商 ...
- pandas基础用法
首先生成一维数组 data = pd.Series([1,2,3,4,5,6,7,8,9])data运行结果 data.head()#默认取前五条,当然也可以加参数 data.tail()#默认取前五 ...
- JAVA学习笔记(3)—— 抽象类与接口
1. Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类 ...
- mac配置变量失败导致ls命令都失效
1.在命令行中输入 export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin 这样可以保证命令行命令暂时可以使用.命令执行完之后先不要关闭终端 ...
- json中的json.dumps()
Json简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - ...
- 什么时候Python的List,Tuple最后一个Item后面要加上一个逗号
为什么看Python的代码,有时候会在数据结构的最后一项末尾加上逗号.直接来看,这个逗号很多余. 根据PEP81的解释: Trailing commas are usually optional, e ...
- Hutool工具里,POST方法,body中传参的几种调用方法
接口说明: POSTMAN测试: JAVA代码: package com.provy.guard.api; import java.util.HashMap; import java.util.Map ...