• 结对编程项目-四则运算
  • 1.需求分析
  • 2.设计思路
  • 3.实现过程中的关键代码解释
  • 4.遇到的困难及解决方法
  • 《程序设计与数据结构》第4周学习总结
  • 教材学习内容总结
  • 教材学习中的问题和解决过程
  • 代码调试中的问题和解决过程
  • 上周考试错题总结
  • 结对及互评
  • 其他(感悟、思考等,可选)

  • 结对编程项目-四则运算

1.需求分析

  • 根据输入的题目数能自动打印出同数目的题目
  • 在每次答题后可以显示是否正确
  • 错误的答题可以显示正确答案
  • 答题后显示正确数目数
  • 结束是询问是否再来一次

2.设计思路

  • 如何解决能让程序自动输出数学题目的问题

1.首先我们假定一个数学运算:A + B = C,在此运算中C是由用户输入的,而A , B ,“+”,则应该是由计算机生成的。

根据上述,我们想到了Random类(第3章),随机产生数字A 和 B,这是我们开始纠结“+”,是不是也让其随机产生(+ , * , /),讨论之后决定搁置,因为技术不够决定作为项目外的扩展。

2.由于放弃了随机产生运算符的“荒唐”想法,我们换了一种思路,能否先确定几种运算规则如:A + B = ;A * B = ;A / B =,让后在由系统随机选取其中一种。

对此我们想到了switch语句(第4章),几种规则的运算就相当于switch分支,每条分支代表一种运算。

3.确定使用switch语句后,我们就得确定switch语句首先得计算的表达式,表达式的值等于运算规则数,不宜过多4~6个。

于是我们再次运用Random类int num = in.nextInt(6),所以随机产生的0~5六个数都有相应的语句匹配。

4.输出题目的问题解决后,打印出用户想要的题目数量,我们决定使用Do语句

首先int num1 = in.nextInt读入用户输入的数字,然后使用do(int num2 = 0;num 2 < num1;num2++)

  • 解决了产生数学问题的主要问题后,其余要求便十分简单了
    1.解决答题后显示正确与否,并显示正确答案

我们使用 if-else语句,在switch语句中每个分支,我们加入如下“语句”

首先要让计算机计算我们所随机产生的数学题目,让后比较用户输入是否结果等于正确值,在判断该输出何种语句

例如:
if ( D /用户输入/ == A + B)
System.out.println ("true");
sum = sum + 1;
else
{ System.out.println ("Wrong")
int num3 = A + B; System.out.println ("right answer:" + num3);
}
同时在每个分支中加入sum = sum + 1 sum表示作对的题目数,只要在最后打印出sum的值就可。

2.做题结束是询问是否在来一次。

在整个do语句上加入while语句,使用标记值来确定是否退出,如PP4.8.

  • 这是我们此次的思路简图:

3.实现过程中的关键代码解释

  • 这次实验所用的所有代码都来自第3,4章的内容:

//进行X次循环,X为用户所要求的题目数,于此产生X道题目
for (int i = 0; i < X; i++)

//产生一种运算
switch (num3)
{
case 0:
int a,b;
a = in.nextInt(21) - 10;
b = in.nextInt(21) - 10;
System.out.println (a + "+"+ b+ "=" +"?");
int d = out.nextInt();
if (d == a + b)
{System.out.println ("true");
sum = sum + 1;
}
else
System.out.println ("wrong");
break;
.......
}

//整体看
while (...)
{
do(...)
{
switch(..)
{
if(...)
}
}
}

4.遇到的困难及解决方法

  • 当我们解决了自动生成数学题目的问题后,以为一切都轻松了,但没想到测试时才发现最难得是分数运算的问题,比如:2/3+4/5=?但程序打出这个题目时,我们输入22/15时,程序显示wrong,因为这是2/3=0,4/5=0,这就很尴尬了。于是我们上网查了查发现计算机中没有分数····,这就有点不明白谢老师什么意思了?,由于这项任务是分给了王旌含,所以他在博问上提了出来关于分数的计算问题;最大公约数求解; Daniel Cai 给了我们一个小小的思路,将分子分母分开计算,(好吧,后面的求最大公约数的问题确实没弄懂,有些语句还没了解),然后,我们两个又卡住了,因为用户在计算输入时是要肯定输入:22/15,那要怎样才能让计算机比较输入数与计算结果是否相等呢?难道要将输入的结果与计算结果分子分母拆开来一个个比较吗?想到这,我们又有了一个思路(做中学嘛),我们将用户输入不用(int)而用(string),因为我们想到了书中的程序4.8检查一个字符串是否是回文时,他将字符串的第一和最后一个逐个对比left = 0; right = str.length() - 1; while(str.charAt(left) == str.charAt(right) && left < right)于是我们抓住这一点:
    【1】首先我们将分子 = N,分母 = M, String wb = new String(n+"/"+m);然后定义一个wb,保险起见,我们先charAt和length,发现wb 如我们所想那样为:22/15
    【2】然后我们string wc = out.nextLine();;一开始我们这样想的```System.out.println(wc == wb);但结果显示为false,为什么?这么烦?我们又想到了娄老师和谢老师给的链接调度场算法提到的“栈”“堆”的概念,总之我们觉得他们不等就对了,所以才诞生将这两个字符串逐个字符比较的想法。
    【3】while (wb.charAt(left) == wc.charAt(left) && left < right)
    {
    left++;
    }
    if (left == right)
    System.out.println ("true");
    【4】就这样我们转变了分数的比较方法,不比较大小,转而比较字符。
    【5】于是我们先写了个小程序试验了一下

    运行之后为

    【6】将其植入进去运行了下又发现问题了

    【7】所以现将老版本贴出来.......(不全)

《程序设计与数据结构》第4周学习总结

教材学习内容总结

  • 第四章:学会使用if-else语句,switch语句,while语句,do语句,for语句

  • 第七章:主要学习定义使用数组和关于命令行参数的知识

教材学习中的问题和解决过程

  • 1.问题:程序4.2中出现的各种不解
    详述:1.首先4.2程序的总体思路是将用户输入的字符串,按照从中间聚拢的方式依次判断字符是否“==”。
    2.关于left = 0,right = str.length(),应该是字符串字符的排序是从0开始的吧,这就有点像数组索引是从0开始的一般吧。

  • 2.问题:程序7.5的问题
    详述:张师瑜的问题

代码调试中的问题和解决过程

  • 1.PP4.8中要求使用标记值来决定用户是否想要退出,于是想到了程序4.8while (another.equalsIqnoreCase("Y"))
    但是依据4.8的内容,但最后运行的时候却直接跳过了输入的一步,致使程序结束并未进行循环。
    所以,我更改了while中的条件

    后来很多同学都出先相同问题博问

代码托管

  • 代码量截图:

上周考试错题总结

  • 1.Linux Bash中,查找当前目录中前天创建的Java文件的命令是(find . -name *.java -ctime 2)
    总结: 对于find命令不够熟悉,实验楼中介绍了find,它不但可以通过文件类型、文件名进行查找而且可以根据文件的属性(如文件的时间戳,文件的权限等)进行搜索。
    find 命令的路径是作为第一个参数的, 基本命令格式为 find [path] [option] [action]

    -mtime n: n 为数字,表示为在n天之前的”一天之内“修改过的文件
    -mtime +n: 列出在n天之前(不包含n天本身)被修改过的文件
    -mtime -n: 列出在n天之内(包含n天本身)被修改过的文件
    newer file: file为一个已存在的文件,列出比file还要新的文件名

  • 2.使用JDB进行调试时查看源代码的命令是(list)
    总结: JDB调试应用不过关,老师的博客

结对及互评

点评模板
和我一小组的是王旌含,这次咋们一起研究了四则运算,虽然最后还是有点问题,很尴尬,但已经有了小默契,能很好分工,但还得继续努力。

点评过的同学博客和代码

  • 2303
  • 2301

其他(感悟、思考等,可选)

这周学习难度突然有点大了,但跟着自己的节奏来倒也学的不慌不乱,有所收获。保证每天都有一个小时以上看书实验的时间。
谢老师的结对编程项目,给了我和王旌含一个挑战,特别是分数,简直弄疯了,博客园中的博问提了又提....
有时候换个角度思考,柳暗花明又一村。
有时候没有困不困难,只有想不想做,你做了,可以说难,没做的人也可以说困难,但关键看自己是否有收获,但····真的有点难了···
班上一些同学很努力,能力很强,得向他们学习。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 070/200 1/2 20/20
第二周 300/500 2/4 30/38
第三周 620/1000 3/7 51/60
第四周 1200/1300 4/9 78/90

参考:软件工程软件的估计为什么这么难,软件工程 估计方法

  • 计划学习时间:XX小时

  • 实际学习时间:XX小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表)

参考资料

  • 《Java程序设计与数据结构教程(第二版)》

  • 《Java程序设计与数据结构教程(第二版)》学习指导

转载于:https://www.cnblogs.com/wbiao21/p/6617146.html

王彪20162321 2016-2017-2 《程序设计与数据结构》第4周学习总结相关推荐

  1. 20172304 《程序设计与数据结构》第九周学习总结

    20172304 <程序设计与数据结构>第九周学习总结 教材学习内容总结 本章是第十五章,主要介绍了图的概念. 首先我来介绍一下图的基本结构. 从逻辑上讲,图是由边和结点组成的,在我的理解 ...

  2. 20162302 《程序设计与数据结构》第一周学习总结

    20162302 2017-2018-1 <程序设计与数据结构>第一周学习总结 教材学习内容总结 很多情况下时间和空间不可兼得.在不同的情况下,要么用时间换空间,要么用空间换时间. 引出算 ...

  3. 20172315 2017-2018-2 《程序设计与数据结构》第九周学习总结

    学号 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常是定义一个非正常情况或错误的对象,由程序或运行时环境抛出. 异常与错误不同,错误代表不可恢复的问题 ...

  4. 20172304 《程序设计与数据结构》 第二周学习总结

    20172304 <程序设计与数据结构>第二周学习总结 教材学习内容总结 本周主要学习了第三章和第四章的内容 第三章 集合概述--栈 3.1集合 集合是一种聚集组织了其他对象的对象. 集合 ...

  5. 20162329张旭升 2016-2017-2 《程序设计与数据结构》第九周学习总结

    20162329张旭升 2016-2017-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 1.建立数据库连接:我们是通过老师给的XAMPP程序来配置自己的数据库,然后根据教程 ...

  6. 20162329 2017-2018-1 《程序设计与数据结构》第九周学习总结

    第九周学习总结 一.学习目标 二叉查找树的理解 二叉查找树的实现 平衡二叉查找树 哈夫曼树的实现 堆的理解 堆的实现 二.学习内容 1.二叉查找树 思路: 二叉查找树与一般二叉树的区别在于,二叉查找树 ...

  7. 20162303《程序设计与数据结构》第一周学习总结

    学号 2016-2017-2 <程序设计与数据结构>第1周学习总结 教材学习内容总结 本周学习了基本的JAVA知识,虽然比较基础,但是在实际过程中还是出现了许许多多的问题,代码一遍遍的敲错 ...

  8. 20162330 2017-2018-1《程序设计与数据结构》第二周学习总结

    2017-2018-1 学习总结目录: 1 2 3 5 6 7 9 10 11 12 目录 0. 本周学习内容总结 0.1 Comparable接口与Comparator接口的使用 0.2 泛型方法设 ...

  9. 20172323 2017-2018-2 《程序设计与数据结构》第九周学习总结

    教材学习内容总结 本周学习第十一章异常和第十二章 第十一章-异常 异常是一个定义非正常情况或错误的对象,由程序或运行时环境抛出,可以根据需要进行相应的捕获和处理. 错误和异常都是对象,代表非正常情况或 ...

  10. 20172314 2018-2019-1《程序设计与数据结构》第一周学习总结

    教材学习内容总结 概述 软件工程:是一门关于高质量软件开发的技术和理论的学科,用来控制开发过程,实现高质量的软件. 软件工程的目标:正确性.可靠性.健壮性.可用性.可维护性.可重用性.可移植性.运行效 ...

最新文章

  1. 使用 libevent 和 libev 提高网络应用性能
  2. 输出php数组结构,在PHP中输出数组结构使用 函数 。
  3. cmder 基本配置和使用
  4. 错误Unable to find manifest signing certificate in the certificat...
  5. HTML:颜色列表(自用)
  6. python np数组中括号里面‘:n‘与‘n:‘什么意思
  7. 定时执行自动化脚本-(一)导入保存jmeter参数至文件的jar包
  8. 光干涉波谷,有可能低于绝对零度
  9. python-读取dcm文件-2021.5.24
  10. 【WINAPI】CreateSemaphore_信号量
  11. poi操作ppt创建表格
  12. 【已解决】PEP 8: W292 no newline at end of file等相关PEP 8错误与警告
  13. 将IP地址转换为整数--将32位的二进制转换为十进制
  14. 蓝桥杯真题 13省Cc1-猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议,年轻的脸孔引人注目。于
  15. Quectel EC20 R2.1 AT指令集(基础部分)
  16. Docker_03_彻底搞懂Dockerfile文件
  17. 【Linux】ps -ef|grep详解
  18. 批量清理Unity中missing的脚本.
  19. Openssl ECC椭圆曲线算法 - 密钥/签名/验签/加密/解密/SM2密文 - 序列化反序列化导出导入 - C源码
  20. nginx.exe -s reload 重启Nginx报错nginx: [error] OpenEvent(“Global\ngx_reload_1840“) failed

热门文章

  1. 特征的标准化和归一化
  2. 越界操作导致程序崩溃的原理
  3. N!阶层的二进制表示中最低位1的位置
  4. pcb板可挖孔吗_PCB板上的过孔的种类及打孔注意事项
  5. 代码整洁之道读书笔记----第三章---函数--第一节-专注且短小
  6. Eclipse找不到或无法加载主类
  7. 市民云注销账号实名认证还有吗_这可能是全网最详细的注销网易服务的教程了...
  8. Suricata工控规则研究
  9. 第 7 章 Neutron - 080 - 创建第一个 local network(I)
  10. FastReport.Net使用:[18]形状(Shape)控件用法