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

教材学习内容总结

  • 条件语句和循环语句可用于控制程序的执行流程
  • 条件语句(选择语句)允许选择下一条执行的语句。Java中主要的条件语句有if、if-else、switch语句
  • 循环语句可以是程序多次执行某些语句,主要的语句有while、do、for语句
  • 相等性运算符和关系运算符:“==”和“!=”用于判断两个值是否相等。
  • 逻辑运算符:逻辑非“!”,逻辑与“&&”,逻辑或“||”。逻辑运算符常用于构成复杂的条件。
  • if语句:if语句后的布尔表达式如果为true则执行if语句中的语句,再执行if语句后的语句;若为false,则直接执行if语句后的语句。
  • if-else语句:该语句可以使程序在某个条件表达式的值为true时执行一段代码,其值为false时执行另一段代码。
  • switch语句:switch语句将一个指定的字符或整型值分别与若干个case子句中的值进行匹配。
  • break语句用来退出switch语句中的各个case子句。
  • 语句块的使用,if语句的嵌套:在一个嵌套的if语句中,else子句和它前面最近且未匹配的if语句相匹配。
  • 数据比较
  • 浮点数比较:比较两个浮点数的相等性时,尽量少用符号运算符。应该计算两个数差的绝对值并将差和某个误差相比较。
  • 字符比较:利用Unicode字符集定义java中字符的相对顺序,数字在大写字母之前,大写字母在小写字母之前。
  • 比较对象:String类中equals方法比较两个字符串的字符是否相同,compareTo方法用于判断两个字符的相对顺序关系,该方法的返回值是一个整型数。
  • while语句:执行相同的语句直至条件变为false
  • break和continue语句:该两种语句会影响程序中的条件控制和循环,但在程序中要避免使用。
  • 迭代器:迭代器是一种对象,可以用来处理相关的一组元素
  • 每一个迭代器对象都有一个可以返回布尔值的hasNext方法。
  • ArrayList类:保存着对象的列表且可以用整型索引值访问这些对象。
  • do语句:do循环的循环体至少会执行一次。
  • for语句:通常用于已知循环次数的情况。

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

  • 问题1:为什么比较浮点值的相等性时要小心?
  • 问题1解决方案:浮点数在内部是以二进制数保存的,所以只有当每一位都相等时,这两个数才相等,但是最好应设置一个误差值来判断两个数是否相等。
  • 问题2:如果case子句后面没有break语句,会发生什么情况。
  • 问题2解决方案:尝试一下,如图

    我将所有的break语句删除,并没有出现书上所谓的执行下一条case子句,而是执行default之后的指令。

    当我只除去其中一条break语句后
    即出现了答案所示的情况,将执行下一条case子句

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

  • 问题1:在编写PP5.3过程中,编写统计奇数、偶数和零的代码如图所示

    输入“20172323”后得到的统计结果如图

    也就是程序并没有将偶数和零分辨开。
  • 解决:在此程序中,我定义的number的变量类型是String,虽然输入的是一串数字,但计算机比较时是按照字符串的形式在进行比较,所以参照的是Unicode表,在该表中“0”为48,所以只需要将原命令修改为number.charAt(left) == 48;,统计时就不会再出错。
  • 问题2:编写PP52过程中,最后设置的再次运行(y/n)出现乱码。
  • 解决:在编写过程中,只定义了一个scan对象

    所以在运行时,用户向同一对象中输入两个信息会导致计算机无法识别。

    设置两个对象即可解决问题。

  • 问题3:编写例5.10的例子时,在bin文件夹下创建了一个urls.inp的输入文件,如图

    但在最终运行时,系统提示无法找到该文件

    还没找到解决方案。
  • 代码托管

    上周考试错题总结

  • 问题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
  • 解析:保留字“new”用于实例化一个对象,声明new后面跟着的是类名,这就是类的构造方法。如
    Car x = new Car( );

    将会实例化一个car类,并赋予一个变量X。


  • 问题2:A class‘ constructor usually defines(一个类的构造函数通常定义:)
    A.how an object is initialized(对象如何初始化)
    B.how an object is interfaced(对象是如何交互的)
    C.the number of instance data in the class(类中的实例数据)
    D.the number of methods in the class(类中的方法)
    E.if the instance data are accessible outside of the object directly(实例数据是否能被类外部的对象直接引用)
  • 解析:构造函数(constructor)是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。

  • 问题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
  • 解析:实例数据是组成类的实体,它可以是任何可用的类型,无论是原始的还是对象的,public型还是private型。

  • 问题4:Java methods can return only primitive types (int, double, float, char, boolean, etc).
    A.true
    B.false
  • 解析:Java方法同样可以返回一个对象,如字符串String。

  • 问题5: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
  • 解析:实际参数是在方法调用中出现的参数,形式参数是在方法头中出现的参数。

  • 问题6:All Java classes must contain a main method which is the first method executed when the Java class is called upon.(所有的Java类都必须包含一个main方法,这是在调用Java类时执行的第一个方法。)
    A.true
    B.false
  • 解析:只有驱动程序需要一个main方法。驱动程序是在任何Java程序中首先执行的,但是它可以根据需要调用其他类,而这些其他类不需要main方法。

  • 问题7:Every class definition must include a constructor.
    A.true
    B.false
  • 解析:Java允许在没有构造函数的情况下定义类,然而,在这种情况下,有一个默认的构造函数。

  • 问题8: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
  • 解析:软件需求指定了程序必须完成的功能,指明了程序应当执行的任务,而不是描述如何执行所规定的任务。通常,任务需求用一个称为功能说明的文档来描述。

  • 问题9:An object that refers to part of itself within its own methods can use which of the following reserved words to denote this relationship?(一个在自己的方法中引用自身部分的对象可以使用下列保留的词语来表示这种关系?)
    A.inner
    B.i
    C.private
    D.this
    E.static
  • 解析: this引用允许对象引用自己。非静态方法需要通过具体的对象和类来引用,this引用可用于引用当前正在运行的对象。

  • 问题10:Inheritance through an extended (derived) class supports which of the following concepts?
    A.interfaces
    B.modulary
    C.information hiding
    D.code reuse
    E.correctness
  • 解析:通过延长一个类并继承它,新类不必重新实现任何继承的方法或实例数据,从而为程序员节省了一项工作。因此,代码复用是通过将其扩展为需要而复用其他人的代码的能力

  • 问题11:Java does not support multiple inheritance, but some of the abilities of multiple inheritance are available by
    A.importing classes
    B.implementing interfaces
    C.overriding parent class methods
    D.creating aliases
    E.using public rather than protected or private modifiers
  • 解析:由于类可以实现任意数量的接口,所以该类本质上是使用接口类,就好像这些接口是在该类中定义的那样。因此,该类继承了接口的方法和常量。此外,该类还可以扩展另一类,从而直接或间接地从多个类继承。这与多重继承并不完全相同,但它与Java的概念非常接近。

  • 问题12: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
  • 解析:测试是必需的,因为所有的软件都有错误。复杂的系统在发布之前尤其需要测试。所寻找的错误类型是逻辑错误和运行时错误。所有的语法错误都将在实施过程中被识别和修复。

  • 问题13:Interface classes cannot be extended but classes that implement interfaces can be extended.(接口类不能被扩展,但是实现接口的类可以被扩展。)
    A.true
    B.false
  • 解析:任何类都可以被扩展,无论它是一个接口,还是实现一个接口,或者两者都没有。唯一的例外是,如果该类被显式地用“final”这个词进行修饰,在这种情况下,它不能被扩展。

  • 问题14:All objects implement Comparable.
    A.true
    B.false
  • 解析:可比性是一个接口,类必须定义compareTo方法,并声明它实现了可比较性。大多数类没有实现可比性。

  • 问题15: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
  • 解析:如果测试人员确实知道程序是如何工作的,那么测试人员的测试用例可能是有偏见的。

其他

感觉这周像是轻松了不少,第五,六章的内容相较于上周也要简单很多,可是考试也没有考得多好。有一个很大的原因是单词的积累量不够,特别是一些计算机技术的专业名词我的积累量明显不足。这点需要特别注意。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 117/117 1/1 19/19
第二周 289/406 1/2 21/40
第三周 403/809 2/4 22/62
第四周 1783/2592 1/5 35/97
第五周 770/3362 1/6 25/122
  • 计划学习时间:20小时
  • 实际学习时间:25小时

参考资料

原文地址:https://www.cnblogs.com/Lewandodoski/p/8780137.html

时间: 2024-07-30 08:10:21

20172323 2017-2018-2 《程序设计与数据结构》第五周学习总结的相关文章

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

20172323 2018-2019-1 <程序设计与数据结构>第一周学习总结 教材学习内容总结 第一章--概述 1.1 软件质量 软件工程(Software Engineering)是一门关于高质量软件开发的技术和理论的学科. 解决的问题:控制开发过程,实现高质量的软件 软件工程的目标 高质量软件的特征 1.2 数据结构 数据结构:计算机存储.组织数据的形式. 程序 = 数据结构 + 算法 软件 = 程序 + 软件工程 栈会颠倒数据的顺序,而队列可以保持数据的顺序. 第二章--算法分析 算法

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

20172305 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书的第一章简单的介绍了计算机和JAVA的历史,基础内容很多,代码的讲解还没用正式进入,本周一直在做敲代码的准备,简单敲了老师给的"Hello World!"以及书后的PP1.3.PP1.4等简单的小程序. 教材学习中的问题和解决过程 问题1:三种不同类型的错误,运行错误和逻辑错误的混淆 问题1解决方案:针对EX1.20的"希望做加法时却做里乘法"进行了网上

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

20172314 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书第一章为计算机系统概述,前面是一些计算机相关的基础知识,让我对计算机有了一个总体的认识,不再是一片空白了,对主存储器和CPU影响深刻,主存储器用于保存程序和数据,CPU执行程序指令.在接下来的Java编程语言与程序开发部分,开始看的时候有点迷茫,不是很理解,后来先按照作业中附带的流程完成一些代码托管之后,接触了完整的简单的程序之后,再回过头来看书,看到的一些陌生的名词在脑海中就有了实际的对应,

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

20172317 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 重新温习了一遍计算机的基础 总算了解了局域网广域网因特网万维网这些东西之间的区别了 通过URL的例子知道了网址各个部分的含义 对Java编程语言和程序开发有了一个粗浅的了解 教材学习中的问题和解决过程 问题:练习题SR1.13出现了答案与题目不相符的情况 问题解决方案:题中有个选项是"网卡",答案中没有,反而有个题目没有的选项"调制解调器"(俗称"

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

20172322 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 了解了print与println的区别 了解了字符串的拼接可以用+来完成 了解了转义字符的使用 学会了使用赋值 学会使用部分算术运算符 学会了使用Scanner来实现交互性 教材学习中的问题和解决过程 问题1:在最初接触赋值时对foalt和double的赋值范围不了解 问题1解决方案:使用万能的度娘后看到一个高赞答案后有了了解 问题2:在提前预习时看到2.7图形后敲入的代码无法执行 问题2解决方案

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

20172328李馨雨<程序设计与数据结构>第二周学习总结 又到周五,李馨雨同学要开始写博客了.让我们开始吧!(????) 教材学习内容总结 1.首先是String类定义的字符串,然后是print和println的区别.转义字符的学习.(让我印象深刻的\b[回车符]在字符串结尾不显示哈哈,及其更新的\t[换行符],还有在课堂上真正明白了什么是回车.) 2.了解变量.常量.赋值语句.变量:保存数据的内存单元.常量:坚定自己不会变的数据!除非你用java的反射(有点复杂,改权限.去修饰符等等.没实

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

20172327 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 字符串的拼接和转义序列的使用 变量的声明和使用 讨论语法及表达式的处理 定义数据转换类型和实现类型转换的机制 创建Scanner类 教材学习中的问题和解决问题 暂无 代码学习中的问题和解决过程 问题1:在提交过程中,突然遇到无法上传的情况 问题2解决方案:通过上网查找,输入git pull之后弹出一个编辑框,选择关闭之后,再次用git push就成功了. 问题2:在按照例题2.10打代码时,Jav

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

学号20172328<程序设计与数据结构>第九周学习总结 教材学习内容总结(异常和递归) 第11章:异常 1.[异常处理]: 一个异常:是一个定义非正式情况或错误的对象,由程序或者运行时环境抛出,可以根据需要捕获和处理. 错误:错误类似于异常,但是错误代表不可恢复的问题并且必须捕获处理. 2.[处理异常的三种方法]:①根本不处理异常②当异常发生时处理异常③在程序的某个位置集中处理异常. 3.[未捕获的异常]:如果程序中不处理异常,则程序将非正常的终止运行,并产生关于描述在何处发生什么异常的信息

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

学号 20172326 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常(exception):定义非正常情况下或错误的情况的对象,由程序或运行时环境抛出,可根据需要进行相应的捕获处理. 异常与错误的区别:错误代表不可恢复的问题并且必须捕获处理.而异常可以忽视,或者使用try语句处理,或调用更高级的方法. 可检测异常与不可检测异常:可检测异常必须由方法捕获,或者必须在可能抛出或传递异常方法的throws子句中列出来.在方法定义的声明头中追加一条throws子句.不可检测异常不需要使

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

20172322 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常 学会了使用try-catch来实现未捕获的异常的处理.可以使得异常被捕获进而不导致程序出现错误退出.使用try写入可能产生异常的语句,使用catch来编写在捕获异常后继续执行的代码(可以为空). "未捕获的异常"指在编译过程中不会被编译软件显示异常但是在运行时会出现异常导致程序直接退出,例如:"ArithmeticException"."In