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

20172332 2017-2018-2 《程序设计与数据结构》第五周学习总结

教材学习内容总结

第五章和第六章

  • 1.布尔表达式(条件语句和循环语句)
  • 2.三种条件语句(if、if-else、switch语句)
  • 3.三种循环语句(while、do、for语句还有一个for-each循环(for语句的加强版))
  • 4.相等性运算符(==、!=)
  • 5.关系运算符(<、>、<=、>=)
  • 6.操作数为布尔型的逻辑运算符(!、&&、||)
  • 7.使用语句块(语句块里的内容为一组,属于同一个if或者while中)
  • 8.if语句的嵌套
  • 9.数据比较(浮点数比较(差值小于一个值后,认为两数相等)、字符比较(unicode值比较)、字符串比较中的Striing类的返回布尔值的equals方法和返回整型值(字符相差值)的compareTo方法、对象比较(用implements Comparable接口))
  • 10.无限循环(Ctrl + C 强行终止正在运行的程序)
  • 11.嵌套循环(先结束内循环,再结束外循环)
  • 12.循环体中避免使用的break和continue语句
  • 13.能够一次处理某个集合的迭代器
  • 14.与数组有关的ArrayList类(索引值也是从0开始)
  • 15.三元运算符条件运算符?:(格式:a?b:c,a运算结果为true,则返回第一个表达式结果,否则返回第二个表达式结果)

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

  • 问题1:算术运算符、逻辑运算符、关系运算符和相等性运算符的优先级
  • 问题1解决方案:先是运算逻辑非、再运算算术运算符,再运算关系运算符、再算相等性运算符,然后是逻辑与,最后是逻辑或。口诀:先算非,再算加减,比较大小,看相等不相等,然后与,最后或,有括号先算括号里的。
  • 问题2:逻辑与和逻辑或的结果
  • 问题2解决方案:逻辑与:只要有一个操作数是错的结果就是错的;逻辑或:只要有一个操作数是对的结果就是对的。(与错或对)
  • 问题3:逻辑运算符的优先级
  • 问题3解决方案:先算逻辑非,再算逻辑与,最后是逻辑或。口诀:飞鱼火(非与或),有括号先算括号里的。
  • 问题4:if语句的嵌套中有没有缩进对结果有影响吗
  • 问题4解决方案:没有影响,先满足第一个if的条件才会执行第二个if,要是不满足第一个if就直接执行对应第一个if的else。
  • 问题5:equalsIgnoreCase这个是什么方法

    1333382-20180407222750825-1662154788.png

  • 问题5解决方案:判断对象与字符串是否相同,不区分大小写。这个循环语句开始的条件就是输入 y 才开始循环。
  • 问题6:这个循环语句是怎么循环的

    20172332 《程序设计与数据结构》第五周学习总结_第1张图片

  • 问题6解决方案:这种逻辑运算符连接的循环语句,就是结果为真时开始循环,结果为假就不循环,就需要用到与错或对这个口诀。
  • 问题7:

    1333382-20180408001956096-1403199681.png

  • 问题7解决方案:例5.10成立的前提是假设有一个名称为urls.inp的输入文件,其中保存的是URL地址列表。但是在自己的虚拟机内没有这个假设的输入文件,所以这个程序能编译成功但却无法成功运行。
  • 问题8:创建ArrayList对象时,不指定元素类型会怎么样
  • 问题8解决方案:不指定元素的类型的话,保存的是Object类型的元素,也就是可以在列表中放入任何类型的对象。也就是说如果是基本数据类型,则需要自动装箱的步骤。所以,这不是一种好的做法。
  • 问题9:条件运算符的优先级
  • 问题9解决方案:排在逻辑或后面。
  • 问题10:三种循环语句的特点
  • 问题10解决方案:①while循环(先判断,执行0次或者多次);②do循环(至少执行一次后再判断);③for循环(先判断,循环次数确定或者容易计算)④if-each循环((迭代器)简单的处理对象中的各项元素)
  • 问题11:三种条件语句的特点
  • 问题11解决方案:①if(只能表达一件事情的一种情况);②if-else(可以把一件事情的所有情况的表达出来);③switch(只能判断相等性条件,>、<等无法判断)。

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

  • 问题1:

    1333382-20180409161439162-342957297.png

  • 问题1解决方案:

    20172332 《程序设计与数据结构》第五周学习总结_第2张图片
    20172332 《程序设计与数据结构》第五周学习总结_第3张图片

由图一改为图二要是不改,当a的值改变后,b的值就没有重新为1,一直累加就会出现这种错误。

  • 问题2:

    20172332 《程序设计与数据结构》第五周学习总结_第4张图片
    20172332 《程序设计与数据结构》第五周学习总结_第5张图片

正面朝上的次数永远为0

  • 问题2解决方案:

    20172332 《程序设计与数据结构》第五周学习总结_第6张图片
    20172332 《程序设计与数据结构》第五周学习总结_第7张图片

原因就是实例化对象时的位置不对,没在循环里面实例化,所以结果要不全是正面,要不全是反面,就没有进行正反面的判断,所以相应的输出的正面朝上的次数也不会变。

  • 问题3:pp5.5中的不考虑标点符号、空格该怎么实现
  • 问题3解决方案:用字符替代的方法,先用空格替代标点符号,再用""替代" "。如下图

    20172332 《程序设计与数据结构》第五周学习总结_第8张图片

  • 问题4:

    1333382-20180410143808932-1444299906.png

  • 问题4解决方案:不能超过两个数同时比较。应把连续比较的数用逻辑与连接,即改为(注意括号

    1333382-20180410143951554-1837994725.png

代码托管

20172332 《程序设计与数据结构》第五周学习总结_第9张图片

上周考试错题总结

1.Which of the following reserved words in Java is used to create an instance of a class?

  • A . class
  • B . public
  • C . public or private, either could be used
  • D . import
  • E . new
  • 答案:E ;我选的:A
  • 分析:这题的意思是哪个保留字实例化会用到,我理解成创建类所用到的保留字了= =,所以应该选E而不是A。
  • 单词:1.instance:实例。

2.In order to preserve encapsulation of an object, we would do all of the following except for which one?

  • A . Make the instance data private
  • B . Define the methods in the class to access and manipulate the instance data
  • C . Make the methods of the class public
  • D . Make the class final
  • E . All of the above preserve encapsulation
  • 答案:D ;我选的:C
  • 分析:封装指的是类包含数据和操作数据所需的方法。要想正确的保存封装。第一:实例数据不应该直接从类的外部访问,所以应该用private保留字。第二:方法被定义为访问和操作实例数据。第三:访问和操作实例数据的方法是公开的,这样其他类就可以使用对象。保留字final与继承有关,与封装无关。所以D是错的。
  • 单词:1.encapsulation:封装。2.except:除了。3.Define:定义。4.manipulate:操作。5.access:访问。

3.All Java classes must contain a main method which is the first method executed when the Java class is called upon.

  • A . true
  • B . false
  • 答案:B ;我选的:A
  • 分析:只有驱动类一定需要main方法,别的类不需要。
  • 单词:1.executed:执行。2.called upon:调用。

4.Java methods can return more than one item if they are modified with the reserved word continue, as in public continue int foo( ) { ... }

  • A . true
  • B . false
  • 答案:B ;我选的:A
  • 分析:保留字return是一个项目,而保留字conitnue是退出一个循环的剩余部分。
  • 单词:1.modified:更改。

5.A method defined in a class can access the class' instance data without needing to pass them as parameters or declare them as local variables.

  • A . true
  • B . false
  • 答案:A ; 我选的:B
  • 分析:实例数据对类的所有方法都是全局可用的,因此方法不需要作为参数接收它们,也不需要在本地声明它们。如果在方法中局部地声明同一个实例数据的变量,那么该实例数据只能在该方法中使用。
  • 单词:1.parameters:参数。

6.In order to create a constant, you would use which of the following Java reserved words?

  • A . private
  • B . static
  • C . int
  • D . final
  • E . class
  • 答案:D ; 我选的:E
  • 分析:用保留字final声明常数,当时考试我以为constant是一个类= =所以选了E。
  • 单词:1.constant:常数。

7.Inheritance through an extended (derived) class supports which of the following concepts?

  • A . interfaces
  • B . modulary
  • C . information hiding
  • D . code reuse
  • E . correctness
  • 答案:D ;我选的:A
  • 分析:通过扩展一个类继承它,新的类不需要执行任何这些继承的方法或实例数据,从而节省了程序员的努力。代码重用是为了满足您的需要而重用他人代码的能力。(这道题跟继承有关,暂时还不是很理解。)
  • 单词:1.Inheritance:接口。2.reuse:重新使用。

8.In order to implement Comparable in a class, what method(s) must be defined in that class?

  • A . equals
  • B . compares
  • C . both lessThan and greaterThan
  • D . compareTo
  • E . both compares and equals
  • 答案:D;我选的:E
  • 分析:Comparable接口中只有一个compareTo方法。
  • 单词:无

9.In which phase of program development would you expect the programmer(s) to create the pseudocode?

  • A . Software requirements
  • B . Software design
  • C . Software implementation
  • D . Software testing
  • E . Could occur in any of the above
  • 答案:B ;我选的:E
  • 分析:伪代码只有在软件设计的时候才能用到,是程序设计的一部分。
  • 单词:1.phase:阶段。2.pseudocode:伪代码。3.implementation:软件实施。

10.Interface classes cannot be extended but classes that implement interfaces can be extended.

  • A . true
  • B . false
  • 答案:B ;我选的:A
  • 分析:任何类都可以扩展,无论它是接口、实现接口,还是两者都不可以扩展。唯一的例外是如果类被明确地修改为final这个保留字,在这种情况下它不能被扩展。
  • 单词:无

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

  • 1.循环语句和条件语句非常的常用,需要认真的学习。尤其循环语句特别容易出错,需要搞清楚哪个表达式应该放在循环中的,哪个表达式应该放在循环外的,也有可能在循环中进行实例化对象。(我的程序经历了无数次这种类型的错(T▽T),但是还是老记不住这个问题。)
  • 2.明显现在学的东西更多了,编程时能用到的东西也多了,当东西一多、一杂,就得需要对自己学到的知识进行一个框架排布了。尤其是对于书上提到的类中的方法,常用的需要知道,要不编程的时候真的不知道有方法可以简便自己的操作。
  • 3.小测不能指望有道啥的,因为有些专有名词,看英文还能看懂,有道翻译成中文反而看不懂了。所以需要看英文,不会的单词查中文,才能正确的理解题目。
  • 4.本周的代码测试里面的问题较少,因为多次出现的问题可能是属于同一类问题,因此就选择了典型,还有一些问题就是因为粗心打错符号,或者打错字母等问题,觉得没有必要再放在博客中。
  • 5.博客提交时,除了老师要求的pp以外。因为时间关系,只做完了第五章的pp,第六章的pp将在提交后继续全部完成。通过多做pp,我对循环语句和条件语句的用法更加娴熟,并且锻炼了自己的思维逻辑能力。
  • 6.发现自己编写的程序越来越复杂,但是却能成功运行的时候,成就感和自豪感比编写之前几章简单的程序时增加了好多好多倍!!!

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 182/182 1/1 10/10
第二周 458/640 1/2 15/25
第三周 469/1109 2/4 18/43 学会IDEA的使用和调试,学会jdb调试。
第四周 1536/2645 1/5 24/67
第五周 980/3625 1/6 25/92
  • 计划学习时间:20小时

  • 实际学习时间:25小时

  • 改进情况:本周虽然两章内容,但是相关性很高,虽然课本很简单,但是有些pp不简单,尤其是老师没有布置的pp,大部分的时间都花在做其他的pp上了,有些时候可能一个小时,一道题都做不出来,虽然学习时间会多一些,但是主要就多在做pp上了,不像第七章花了很多的时间在课本上。

参考资料

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

转载于:https://www.cnblogs.com/yu757503836/p/8718417.html

你可能感兴趣的:(数据结构与算法,java,运维)