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

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

教材学习内容总结

  • 布尔表达式:相等性运算符:“==”,“!=”分别表示“相等”与“不相等”。

    关系运算符:“<”, “>”, “<=”, “>=”分别表示“小于”, “大于”,“小于等于”,“大于等于”。

    (以上运算符优先级大于算术运算符)。

    逻辑运算符:“!”, “&&”, “||”分别表示“非”, “与”, “或”。

  • 数据比较:重点在于浮点数比较:浮点数用二进制表示,两个数的长度可能不等,只有当两个浮点数的二进制数位相等时,浮点数的值才相等,所以应该计算两数的差与一个误差标准相比。
  • 字符比较:Unicode值比较
  • 字符串比较:String类提供comepareTo方法,返回-,+,0 (返回非布尔值);

    还有equals : string.equals(string2),返回true/false。

  • if语句:条件判断为true则继续执行,否则不执行if语句中的语句。
  • if-else语句:条件成立执行第一条语句,否则执行第二条语句。加{}可执行多条语句(语句块)。
  • while语句:条件成立时执行语句,与if区别在于他执行完后会再次计算表达式的值,如果仍然为true,将再次执行循环体,直到表达式为false。
  • 嵌套循环:一个循环中包含另一个循环。内层循环结束后再继续执行外层循环。
  • 迭代器:是一种对象,提供了一些方法有助于一次处理某个集合,每个迭代器对象都有一个可以返回布尔值的hasNext方法,可以充当处理每项元素的循环控制条件。
  • switch:将一个指定的字符或整型值分别于若干个case子句中的值进行匹配。通常只需执行一种case子句下的语句,所以break语句几乎是必须使用的。
  • 条件运算符:“(布尔条件)?(表达式1):(表达式2)” ,如果布尔条件的运算结果为true将返回表达式1,否则将返回表达式2。
  • while循环与do-while循环:前者先判断再执行;后者先执行一次后再判断是否接着执行。

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

  • for和while的区别是什么
  • while:

    while(Boolean_expression)

    {

    //Statements

    }

    如果布尔表达式的结果为真,则循环中的动作将被执行。这将继续下去,只要该表达式的结果为真。当表达式进行测试,结果为 false,循环体将被跳过,在while循环之后的第一个语句将被执行。

    for:

    for(initialization; Boolean_expression; update)

    {

    //Statements

    }

    初始化步骤首先被执行,然后计算布尔表达式,如果结果为false,不执行循环语句,跳转到循环语句之外下一句;如果结果为true则执行循环体,再执行更新,然后再次计算布尔表达式,如果还为true则重复执行循环体,否则跳出循环。

  • 教材课后题SR6.10

    int low = 10, high = 0;

    do

    {

    System.out.println(low);

    low++

    } while (low <= high);

    我认为输出只有”10“,执行完一次后,判断条件不满足,不会再循环。但答案是”10,11,12......."无限的。之后把书上的代码实际操作了一遍,发现答案是错的,如图

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

  • 问题一:错误提示找不到符号,如图

  • 问题一解决:开始以为后面代码输入出错了,检查好几遍之后都觉得没有问题,联想到之前出现“找不到符号”的问题是因为名称输入错误,经历过一番苦苦寻找,加上与书上其他类似代码的比较之后,终于发现一开头就缺少了"import java.util.Scanner" <@[email protected]>鉴于最近老是犯低级错误并且为之付出很多时间去修正,所以这个问题一定要记录下来并且置顶,提醒自己以后绝不能再犯同样的错误。
  • 问题二:书上课后题PP5.3在编译运行后可以无限输入整数,无法终止,如图

  • 问题二解决:自己检查后没有发现错误之处,在助教的帮助下发现了问题所在。如下代码是多余的,

    while(xxx.hasNext())

    String str = String.valueOf(num);

    导致一直循环输入整数操作。我之前写它的时候是为了继续检索下一个字符,而我对输入整数的定义是int型,再纠正之后把它改为了String型,省去了很多操作。

  • 问题三:在做PP6.6时,错误提示变量已在方法中定义。如图

  • 问题三解决:错误原因在于之前已定义begin=0,但在for语句中再次定义。在编写for语句时,机械地套用for语句的一般使用方法,导致重复定义,但本来感觉应该是可以的,毕竟是同一个名称,但在提醒错误后又一想,int是用来声明一个新变量的,在第二次使用时,系统认为你要定义新的变量,但名称相同,故错误。
  • 问题四:pp66编译运行成功之后,并没有如愿掷100次骰子,实际只运行一次。如图

  • 问题四解决:检查代码后发现是由于for语句之后没有加“{}”,所以直接执行一次循环语句之后就输出了正面背面的次数并结束了程序。加上“{}”之后,便可以正常循环,循环完毕之后才输出。
  • 问题五:pp66运行后结果如图,循环次数的总和是101

  • 问题五解决:循环次数计算错误,改为如下图后,正好满足100次。当begin=0时,进行第一次操作所以当begin=99时进行第100次,将判断条件改为“begin<100”则正确,之前错误的原因是这里“begin<=100”,忽略了等于0时要运行一遍。

代码托管

上周考试错题总结

  • 错题一:In order to preserve encapsulation of an object, we would do all of the following except for which one? Make the class final
  • 错题一解析:这道题误认为把类封装了就可以保护类中的所有。封装意味着该类包含操作数据所需的数据和方法。为了正确保存封装,实例数据不应该从类之外直接访问,因此实例数据是私有的,方法被定义为访问和操作实例数据。此外,访问和操作实例数据的方法被公开,以便其他类可以使用该对象。“final”这个词是用来修饰的。类的方法设为private没有关系。
  • 错题二:Interface classes cannot be extended but classes that implement interfaces can be extended.false
  • 错题二解析:任何类都可以继承,无论它是一个接口,实现一个接口,还是两者都不能。唯一的例外是,如果对类进行了显式修改,使用了“find”一词,在这种情况下,它不能继承。
  • 错题三:Inheritance through an extended (derived) class supports which of the following concepts?code reuse
  • 错题三解析:通过扩展一个类并从中继承,新类不需要重新实现任何继承的方法或实例数据,代码重用是为了重用其他的代码的能力,通过继承它来满足的需要。
  • 错题四:Static methods cannot reference non-static instance data
  • 错题四解析:实例数据包含静态和非静态的,故实例数据可以引用静态方法。
  • 错题五:Every class definition must include a constructor.false
  • 错题五解析:java允许在没有构造函数的情况下定义类,但是在这种情况下使用了默认构造函数。
  • 错题六:All objects implement Comparable. false
  • 错题六解析:这道题目错在理解吧。可比较的是一个接口,类必须定义compareto方法并明确声明它实现的可比较的是可比较的实现。大多数类没有实现可比较的。
  • 错题七: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. true
  • 错题七解析:实例数据对所有类的方法都是全局可用的,因此这些方法不需要接收它们作为参数或在本地声明它们。如果与实例数据同名的变量在方法中本地声明,那么实例数据将“隐藏”在该方法中,因为引用将是本地变量。
  • 错题八:Java does not support multiple inheritance, but some of the abilities of multiple inheritance are available by implementing interfaces
  • 错题八解析:因为一个类可以实现任意数量的接口,所以这个类在本质上使用接口类,就好像那些接口是在这个类中定义的。因此,这个类继承了接口的方法和常量。此外,该类可以扩展另一个类,从而直接或间接地从多个类继承。这与多重继承并不完全相同,但它与java接近。
  • 错题九:All Java classes must contain a main method which is the first method executed when the Java class is called upon. false
  • 错题九解析:只有驱动程序需要一个主方法。驱动程序是首先在任何java程序中执行的程序(apppls除外),但它可能会根据需要调用其他类,而其他类不需要主要方法。
  • 错题十:The expressions that are passed to a method in an invocation are called. actual parameters
  • 错题十解析:方法使用的是实际参数,声明变量时使用的才是形式参数。

其他

这周我犯了一个致命的错误,在把所有的代码push到码云上之后,由于commit不尽人意,于是便把他们全部删除了,再次push时出现了问题,导致所有代码都没有了???,就在那个深夜,伟大的我把代码删的干干净净后,怀着一颗哇凉哇凉的心久久不能入睡...又怀着一颗哇凉哇凉的心上了一天课后——终于!!!晚自习时王老师给我找回来了代码!通过这件事情我深刻地意识到以后不能乱删东西,或者删之前都留个备份,否则可能有令人窒息后果。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 93/93 1/1 20/20
第二周 305/398 1/2 20/38
第三周 328/651 2/4 25/60
第四周 1013/1689 1/5 30/90
第五周 795/2407 1/6 30/120

参考资料

原文地址:https://www.cnblogs.com/YiYiYi/p/8783397.html

时间: 2024-08-29 22:30:54

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

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

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

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的"希望做加法时却做里乘法"进行了网上

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