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
这个是什么方法
- 问题5解决方案:判断对象与字符串是否相同,不区分大小写。这个循环语句开始的条件就是输入 y 才开始循环。
- 问题6:这个循环语句是怎么循环的
- 问题6解决方案:这种逻辑运算符连接的循环语句,就是结果为真时开始循环,结果为假就不循环,就需要用到与错或对这个口诀。
- 问题7:
- 问题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:
- 问题1解决方案:
由图一改为图二要是不改,当a的值改变后,b的值就没有重新为1,一直累加就会出现这种错误。
- 问题2:
正面朝上的次数永远为0
- 问题2解决方案:
原因就是实例化对象时的位置不对,没在循环里面实例化,所以结果要不全是正面,要不全是反面,就没有进行正反面的判断,所以相应的输出的正面朝上的次数也不会变。
- 问题3:pp5.5中的不考虑标点符号、空格该怎么实现
- 问题3解决方案:用字符替代的方法,先用空格替代标点符号,再用""替代" "。如下图
- 问题4:
- 问题4解决方案:不能超过两个数同时比较。应把连续比较的数用逻辑与连接,即改为(注意括号)
代码托管
上周考试错题总结
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上了,不像第七章花了很多的时间在课本上。