20172333 2017-2018-2 《Java程序设计》第5周学习总结

时间:2021-05-18 22:14:28

20172333 2017-2018-2 《Java程序设计》第5周学习总结

教材学习内容

1.if语句、if-else语句、switch语句 都是通过对于布尔表达式的结果来进行是否执行下一步语句的条件(选择)语句。

2.“=”为赋值运算符,“==”与“!=”为相等性运算符,“>=" 等关系运算符,以及“!” “&&” “||”等逻辑运算符。

3.各种条件语句下面的一组语句若是大于1条以上,则需要用{}来进行包含,即形成语句块。

4.布尔表达式的结果只有true或者false。

5.if语句和if-else语句中的嵌套类型可以在 其中加入新的if和if-else。

6.浮点数比较时比较特殊,由于浮点数大多是计算结果后产生,不可能达到完全每一位相同,则在比较时引入一个常量TOLERANCE,若两浮点数之间的差值不大于该常量则可以近似看做相同。

7.字符串比较时,实济是在比较每一个字符在ASCIS码中的位置先后。常用equals和compareto。

8.在使用While 语句的时候,一定要设置好结束时候条件不满足,否则会出现无限循环的错误,此时可以用CTRL+c来强制结束程序。

9.for语句是通常知道循环次数的情况。

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

这一次的代码调试问题及解决过程只记录了我在做pp5.7时候的问题,很有意思,而且错误也是花式错误,最后结果输出的时候也与他人做出来的java程序有一点点不同。

  • [x] 问题1:我第一次遇到在Javac成功执行后没有报错后进行运行java程序时不按照java程序走的情况。本来我是在Java程序中定义了要求外界运行改程序时输入:0 1 2 来分别代表 石头 剪刀 布 ,结果我输入以一个数字之后,Java程序毫无反应,看上去像是遇到了无限重复的那种错误。如图20172333 2017-2018-2 《Java程序设计》第5周学习总结

  • 解决过程:我一直把这个问题看做是我可能是犯了永久满足While的错误,在对Java程序检查过程中却发现,我并未犯该错误,我以为是我自己没看出来错误,便将代码给蒋子行同学帮助我检查,然后他也确定While没有问题,事情似乎陷入了僵局,后面我在一次偶然的机会下多按了一次2,如图20172333 2017-2018-2 《Java程序设计》第5周学习总结

。居然成功输出了我想要的结果。然而问题才刚刚开始。。。

  • [x] 问题2:在测试第一个问题的时候,我发现我的代码中有一些错误会导致输出结果无法如愿,当然这都是普通问题,随便更改好就可以了,然而我又再次出现了一些“奇怪”的问题,那就是我在上一次问题中,输入两次数字之后会出现一次结果,现如今变成要么一次输入不出现结果,要么就是两次输出后一次性输出两个结果。如图20172333 2017-2018-2 《Java程序设计》第5周学习总结

  • 解决过程:完全没辙,但是我又发现了一个程序错误,那就是我的if语句中将一个可能性没有排除,导致了输出两个截然相反的结果如图20172333 2017-2018-2 《Java程序设计》第5周学习总结

,在处理完这个问题之后,我原以为这个Java程序也就最多强制让人至少玩两次了,结果最戏剧化的一幕出现了(问题3)。

  • [x] 问题3:我的Java程序本来是要先提问用户出什么0,1,2中的哪一个,在开始输出的,然而我这一更改后不知道咋搞的,输出Java程序后一点反应没有,真的把我吓到了,像是我把这个程序搞坏了一样,抱着弄好第一个问题的方法我随便打了一个数字,结果哪一个提问语句出来了,这种感觉就好比是一个程序休眠了要先打个东西(实测随便什么东西都可以激活,那怕是字母)来激活程序才开始运行一样(捂脸)如图
    20172333 2017-2018-2 《Java程序设计》第5周学习总结

  • 解决过程:感觉我这个激活程序还很有趣,反正不影响输出,就留下来,不知道原理(求教),代码如图
    20172333 2017-2018-2 《Java程序设计》第5周学习总结
    20172333 2017-2018-2 《Java程序设计》第5周学习总结

-总结:在做这个pp5.7的时候算是我第一次独自码这么100多行的Java程序,过程有点艰辛,但是还是有些收获,比如刚开始做这个PP5.7的时候我还单独列了一些处理该PP5.7 的一些要处理的问题,这样做PP5.7的时候不至于摸不着头。如图20172333 2017-2018-2 《Java程序设计》第5周学习总结

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

  • [x] 问题1:Arraylist类的相关定义不清晰
  • 解决过程:我在百度上也进行过一部分寻找,大致感觉这个类就好比是一个数列,而这个数列里面的元素就是各个对象,我在书上和百度查到的一些常用方法,也大多是删除其中的对象或者是添加对象进去,但是其中有三种删除方法。

Remove方法用于删除一个元素,通过元素本身的引用来删除 。

RemoveAt方法用于删除一个元素,通过索引值来删除。

RemoveRange用于删除一批元素,通过指定开始的索引和删除的数量来删除

对于这三者区别完全不理解其中的意思(懵逼)。

代码托管

20172333 2017-2018-2 《Java程序设计》第5周学习总结

(statistics.sh脚本的运行结果截图)

上周考试错题总结

1.The relationship between a class and an object is best described as

A . classes are instances of objects

B . objects are instances of classes

C . objects and classes are the same thing

D . classes are programs while objects are
variables

E . objects are the instance data of classes

总结:类中包含实例数据与方法,而对象就是实例化的数据。

  1. 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

总结:封装意味着该类包含了操纵数据所需的数据和方法。为了正确地保存封装,实例数据不应该直接从类之外访问,因此实例数据是私有的,并且定义了方法来访问和操纵实例数据。此外,访问和操纵实例数据的方法被公开,以便其他类可以使用该对象。

3.If a method does not have a return statement, then

A . it will produce a syntax error when compiled

B . it must be a void method

C . it can not be called from outside the class that defined the method

D . it must be defined to be a public method

E . it must be an int, double, float or String method

总结:只有void方法不用返回,其余的都有相应的返回值。

4.Consider a sequence of method invocations as follows: main calls m1, m1 calls m2, m2 calls m3 and then m2 calls m4, m3 calls m5. If m4 has just terminated, what method will resume execution?

A . m1

B . m2

C . m3

D . m5

E . main

总结:一旦方法终止,方法里的值便会恢复。

5.Consider a Rational class designed to represent rational numbers as a pair of int's, along with methods reduce (to reduce the rational to simplest form), gcd (to find the greatest common divisor of two int's), as well as methods for addition, subtraction, multiplication, and division. Why should the reduce and gcd methods be declared to be private.

A . Because they will never be used

B . Because they will only be called from
methods inside of Rational

C . Because they will only be called from the constructor of Rational

D . Because they do not use any of Rational's instance data

E . Because it is a typo and they should be declared as public

总结:私有定义只能在本类之中使用。

  1. In black-box testing, the tester should already know something about how the program is implemented so that he/she can more carefully identify what portion(s) of the software are leading to errors.

A . true

B . false

总结:黑盒实验,程序员只是知道输入与输出,不知道其具体方法,一点知道方法便变成了透明盒实验了。

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

A . true

B . false

总结:除了final不可扩展,其余均可拓展。

8.Formal parameters are those that appear in the method call and actual parameters are those that appear in the method header.

A . true

B . false

总结:形参是方法头里面的,实参是方法内部的参数。

9.Assume that the class Bird has a static methodfly( ). If b is a Bird, then to invoke fly, you could do Bird.fly( );.

A . true

B . false

总结:静态方法所有都共享。

10.The goal of testing is to
A . ensure that the software has no errors

B . find syntax errors

C . find logical and run-time errors

D . evaluate how well the software meets the original requirements

E . give out-of-work programmers something to do

总结:测试Java程序是为了确保程序逻辑错误不出现。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 125/125 2/2 20/20
第二周 269/394 2/4 未知/38
第三周 477/920 1/5 X/X
第四周 1179/2338 1/6 --
第五周 1131/3154 1/7 ?/?

参考资料