第五周作业

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

教材学习内容总结

这周着重学习了循环语句和条件语句的语法和使用,对原先简单涉及的逻辑运算符也进行了系统详细的学习。原先对if语句的嵌套使用不够熟练,在这周的学习任务中进行了学习。以前因为语句块的编写也犯了一些错误,这周也进行了学习。还有一部分是对以往知识的复习和巩固。这周的学习内容大致就是这些了吧。

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

  • 问题1:不是很清楚java中字符串是如何比较大小的
  • 问题1解决方案:compareTo() 的返回值是int, 它是先比较对应字符的大小(ASCII码顺序)
    1、如果字符串相等返回值0
    2、如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值)(负值前字符串的值小于后字符串,正值前字符串大于后字符串)
    3、如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方全比较完,这时就比较字符的长度.

例:
String s1 = "abc";
String s2 = "abcd";
String s3 = "abcdfg";
String s4 = "1bcdfg";
String s5 = "cdfg";
System.out.println( s1.compareTo(s2) ); // -1 (前面相等,s1长度小1)
System.out.println( s1.compareTo(s3) ); // -3 (前面相等,s1长度小3)
System.out.println( s1.compareTo(s4) ); // 48 ("a"的ASCII码是97,"1"的的ASCII码是49,所以返回48)
System.out.println( s1.compareTo(s5) ); // -2 ("a"的ASCII码是97,"c"的ASCII码是99,所以返回-2)

  • 问题2:不理解break和continue的区别究竟在哪?书上说它与break语句类似,但不同的是循环控制条件将再次被计算,如果其值仍然为true,则再次执行循环体。不是很理解
  • 问题2解决方案:Java中关键字continue、break和return的区别:
    continue:跳出本次循环继续下一次循环
    break: 跳出循环体,继续执行循环外的函数体
    好吧,一开始是没有读懂书上是什么意思,想着continue跳出循环体了为什么还要执行循环,查阅资料后知道不是这样,continue只是跳出了本次循环而已。

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

  • 问题1:做习题pp5_1的时候,提示我有if,没有else。

  • 问题1解决方案:我检查了一遍代码发现了错误,因为else子句仅仅包含第一条子句,我在代码中添加了花括号,果然就能够成功编译了。

  • 问题2:尽管我能够成功编译,但我发现我无论怎么改变输入年份的数值,其结果都是闰年...

  • 问题2解决方案:我又检查了一遍,原来是我错误的吧num6, num7,num8定义为double形变量了。我进行改正后可输出结果还是没有改变,(。-_-。)原来我计算的时候又忘记先转换数据类型了(在上一周就犯过这种错误,也在博客中有所体现,不在过多阐述)改正后,代码就能够成功编译运行了。

  • 问题3:做习题5_3的时候无法正常运行(呃...,忘记截图了)

  • 问题3解决方案:我用网上找来的方法利用Integer的valueOf方法返回的是数字的ascii码的形式,而不是int,我也能够成功的将习题5_3解决。但我不知道如果用书上给的方法要怎样解决,在向助教请教后知道:在字符的前后各加一个双引号就把这个字符转换为字符串了,问题也就迎刃而解了( ̄▽ ̄)~*

  • 问题4:做习题5_7的时候无法进行多次输入。总是会在问是否继续进行的时候直接终止。

  • 问题4解决方案:我想到以前有同学在蓝墨云上询问过这个问题。于是我又找来复习了一遍。

  • nextInt只读取整数,并没有读取输入进去的\n,也就是说后面的nextLine会读取\n,但并不返回,会导致后面的一个语句显示没有读取输入就直接跳过了。

  • 我在下面又加了一行nextLine,问题就得以解决了。

代码托管

上周考试错题总结

  • 错题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
  • 解析:封装意味着类包含操作数据所需的数据和方法。 为了正确地保护封装,不应该从类的外部直接访问实例数据,因此实例数据将变为专用,并定义方法来访问和操作实例数据。 此外,访问和操作实例数据的方法已公开,其他类可以使用该对象。 保留字“final”用于控制继承,与封装无关。
  • 这道题由于对概念的理解不清导致了错误。
  • 错题2: 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
  • 解析:一旦方法终止,控制就会继续使用调用该方法的方法。 在这种情况下,m2调用m4,以便当m4终止时,m2被恢复。
  • 这道题我起初在做的时候没有弄懂这道题的意思,直到最后看个人解析的时候才明白这道题的真正意思...
  • 错题3: Instance data for a Java class
    A . are limited to primitive types (e.g., int, float, char)
    B . are limited to Strings
    C . are limited to objects(e.g., Strings, classes defined by other programmers)
    D . may be primitive types or objects, but objects must be defined to be private
    E . may be primitive types or objects
  • 解析:实例数据是构成类的实体,可以是任何可用的类型,无论是基元还是对象,并且可以是公共或私有的。 通过使用对象作为实例数据,它允许该类建立在其他类上。 这个关系中类的实例数据是其他类的关系被称为has-a关系。
  • 还是对对概念理解不清吧,认为示例数据仅限于对象
  • 错题4: Consider a method defined with the header: public void doublefoo(double x). Which of the following method calls is legal?
    A . doublefoo(0);
    B . doublefoo(0.555);
    C . doublefoo(0.1 + 0.2);
    D . doublefoo(0.1, 0.2);
    E . all of the above are legal except for D
  • 解析:在A的情况下,值0(一个int)被加宽为一倍。 在C的情况下,执行加法产生0.3,然后调用doublefoo。 D中的参数列表是非法的,因为它包含两个双参数而不是1。
  • 这道题就是马虎了,认真一点是可以做对的。
  • 错题5: Visibility modifiers include
    A . public, private
    B . public, private, protected
    C . public, private, protected, final
    D . public, protected, final, static
    E . public, private, protected, static
  • 解析:Public,private,protected控制变量和方法的可见性。最终控制是否可以进一步更改或覆盖变量,方法或类,而不是可见性。静态控制变量或方法是否与类的实例或类本身相关联。
  • 这道题也是书本上的知识没有记牢...
  • 错题6: During program development, software requirements specify
    A . how the program will accomplish the task
    B . what the task is that the program must perform
    C . how to divide the task into subtasks
    D . how to test the program when it is done
    E . all of the above
  • 解析:规范阶段是了解手头的问题,以便程序员可以确定需要做什么来解决问题。 上面列出的其他工作是设计阶段(A,C)和测试阶段(D)的一部分。
  • 这道题确实是不知道,记下来记下来(・_・)ヾ
  • 错题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
  • 解析:通过扩展一个类并继承它,新类不必重新实现任何这些继承的方法或实例数据,从而节省了程序员的工作量。 因此,代码重用是为了您的需要扩展它而重用其他代码的好处。
  • 代码继承还没有学吧...先记下来再说

其他

因为上周直接学习的第7单元显得有些吃力,这周的内容的难度有所下降,我认为学习起来是轻松了一些的,但通过这周的学习还是发现了自己的许多不足,有道课后的代码作业由于自己的粗心大意导致卡了很长时间。在测验中也发现自己的许多错误都是由于对教材上的概念理解不清导致的,在以后的学习生活中争取弥补这些不足。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 126 1/1 20/20
第二周 388/466 1/2 15/35
第三周 706/1162 1/3 17/52
第四周 1104/2266 1/4 20/72
第五周 1126/3392 1/5 15/87
  • 计划学习时间:17小时

  • 实际学习时间:17小时

参考资料

posted @ 2018-04-10 14:55  银海、  阅读(302)  评论(10编辑  收藏  举报