zoukankan      html  css  js  c++  java
  • 学号 2017-2018-20172309 《程序设计与数据结构》第9周学习总结

    学号 2017-2018-20172309 《程序设计与数据结构》第9周学习总结

    教材学习内容总结

    • 第十一章:
      - 异常处理:在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出),Throwable 有两个重要的子类:Exception(异常)和 Error(错误)。
      ①. Exception(异常)是应用程序中可能的可预测、可恢复问题。
      ②. Error(错误)表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。
      - 未捕获的异常:
      ①. 如果程序不处理异常,则将非正常的终止异常,并产生关于描述何处发生什么样的异常的信息。
      ②. 异常跑出的信息,提供了方法调用堆栈踪迹。
      - try-catch语句
      ①. try语句块可以有多个相关联的catch子句,,每一个catch语句称为一个异常处理器。
      ②. 如果没有异常抛出,将继续执行try语句后的语句(所有catch子句后的语句)。
      - finally子句
      ①. 用来定义一串必须执行的语句。
      ②. 常用来关闭资源。
      - 异常的传递
      如果在一个异常的发生处没有捕获和处理该异常,则该异常将传递给上级调用的方法。直到遇到main方法,将终止程序并产生错误信息。
      - 异常类层次结构
      ①. 自定义异常
      ②.可检测异常和不可检测异常
      - I/O!?
      1. IO流对数据的操作是通过流的方式
      2. Java对数据的操作是通过流的方式
      3. Java用于操作流的对象都在IO包中
      4.流按操作分为两种:字节流和字符流
      5. 流按流向分为:输入流和输出流

    • 第十二章:
      - 含义:递归算法是一种直接或间接地调用自身的算法。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。
      - 无穷递归:任何一个递归定义中必须有称为基本情况的非递归部分,才能使递归结束。否则称为无穷递归。
      - 每次递归调用都将新增内存空间,因此无穷递归常产生运行时错误,报告内存耗尽的错误信息。
      - 注意:递归不是唯一的选择,每种递归都能用循环迭代来完成,但对于某些问题将变得更加简练。
      - 直接递归与间接递归:
      一个方法调用自己称为直接递归

      一个方法调用其他方法,最终再调用自己,称为间接递归

       - 递归的运用:
              1. 迷宫旅行。
              2. 汉诺塔问题。 
      

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

    • 第十一章:
      • 问题一:异常和错误的异同点
      • 问题1解决方法:
        相关链接:运行时产生的异常与一般异常
      • 问题二:使用try-catch语句中的catch中的异常和实际出现的异常是怎么相互匹配的?也就是比如我出现了0作除数的错误,这个ArithmeticException错误怎么和catch()语句相互认识?
      • 问题二解决方案:在java中所有的异常都大部分自己已经自己定义好了的,当出现错误时,他们将自动匹配。
      • 问题三:书中catch子句调用了getMessage、printStackTrace方法,这两个方法如何使用,使用时应该注意什么?以及getMessage()与toString()方法有什么区别?
      • 问题三解决方案:总结:
        1. e.toString()获取的信息包括异常类型和异常详细消息,而e.getMessage()只是获取了异常的详细消息字符串。
        2. getMessage()和printStackTrace()方法的区别:
        3. e.getMessage(); 只会获得具体的异常名称. 比如说NullPoint 空指针,就告诉你说是空指针...
        4. e.printStackTrace();会打出详细异常,异常名称,出错位置,便于调试用.. 一般一个异常至少几十行
      • 问题四:遇到异常什么时候该捕获。什么时候抛出?
      • 问题四解决方案:
        简单点说就是能够捕获并处理就捕获处理,不能够就抛出。
        相关链接百度知道
      • 问题五:如何理解可检测异常和不可检测异常?
      • 问题五解决方案:
        1. java中异常分为两类:checked exception(检查异常)和nchecked exception(未检查异常)。
        2.所有不是RuntimeException派生的Exception都是检查型异常,未检查异常也叫RuntimeException(运行时异常).
        3. 对未检查的异常(unchecked exception )的几种处理方式:捕获、继续抛出、不处理
        4. 可检查异常:对于检查的异常必须处理,或者必须捕获或者必须抛出
        5. 对于RuntimeException的子类最好也使用异常处理机制。虽然RuntimeException的异常可以不使用try...catch进行处理,但是如果一旦发生异常,则肯定会导致程序中断执行,所以,为了保证程序再出错后依然可以执行,在开发代码时最好使用try...catch的异常处理机制进行处理。
    • 第十二章:
      • 问题一:递归、迭代各有什么优缺点。哪种情况用递归,哪种情况用迭代?
      • 问题一解决方案:
        注:当使用迭代法更加简单、易懂并易于编写程序时,应避免使用递归,递归会带来多次调用方法的开销,且经常显得不直观。
      • 问题二:递归的格式?
      • 问题而解决方案:就举个例子吧:N的阶乘:n!=n*(n-1)*(n-2)*...*1
    1. 递归法:
    >     int factorial (int n) {
    >     if (n == 1) //非递归部分
    >     {
    >         return 1;
    >     } 
    >    else//递归部分
    >      {
    >         return n*factorial(n-1);
    >       }
    >    }
    

    原理:在执行以上代码的时候,其实机器是要执行一系列乘法的: factorial(n)factorial(n-1)factorial(n-2) → … → factorial(1)
    2. 迭代法:

    >       int factorial (int n) 
    >       {
    >       int product = 1;
    >
    >       for(int i=2; i<n; i++) 
    >           {
    >       product *= i;![](https://images2018.cnblogs.com/blog/1333063/201805/1333063-20180513172957257-818255889.png)
    
    
    >           }
    >      return product;
    >       }
    

    原理:先计算1乘以2,然后用其结果乘以3,再用的到的结果乘以4….一直乘到N。在程序实现时,可以定义一个计数器,每进行一次乘法,计数器都自增一次,直到计数器的值等于N截至。

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

    • PP11.1中出现的问题:如何达到题目要求“直到输入“DONE”为止”?
    • 解决方案:这个问题出现是因为我理解题目出现了问题,我以为是一下子输入一大串字符串,然后从中读取,读到“DONE”就停止。其实不是的,而是检测到输入得单词为“DONE”就停止,然后判断总输入字符串是否超过长度20个,如果是,就抛出异常。
      代码链接
    • PP12.1中出现的问题:如何使用递归实现代码?基本情况与递归情况应该怎么确定?
    • 解决方案:
      代码链接
    • PP12.9中出现的问题:应该如何排版,实现输出后呈现塔的形状?
    • 解决方案:每行前的空格是有规律的,第1行有n-1个空格、第2行有n-2个空格·····第n行有0个空格,用循环即可实现!

      代码链接

    代码托管

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

    上周考试错题总结

    • 第十章测试错题:
      - 错题1:
      - 错误原因:没有看到这一组元素中的最小数2。另外选出最小数后应该与最前面一个数换位置。
      - 错题2:
      - 错误原因:选择时是准备选覆盖的,但是不知道怎么就是选了A!!
      - 错题3:
      - 错误原因:没有了解到排序的实质,这两种排序都是对一组数据的重新组合,不需要额外的空间内存。
      - 错题4:
      - 错误原因:虽然继承和接口支持多态,但只有在有后期绑定时才会这样做。但是,重载是多态性一(方法)名的一种形式,多个主体,只要程序使用重载,多态就在使用中。
      - 错题5:
      - 错误原因:这是一种用于完成多态引用的技术,它的精确解释将在执行过程中发生变化,这取决于变量在遇到时所引用的精确对象。
    • 第十一章测试错题:
      - 错题1:
      - 理解情况:抛出异常是被当前的代码如果代码包含在一个try语句和适当的catch语句实现,否则是传播的方法调用的方法引起的异常,在一个合适的声明,否则继续传播通过相反的顺序的方法,这些方法被调用。然而,一旦达到了主要的方法,这个过程就停止了。如果没有被捕获,异常会导致程序终止(这将是应答a,例外被忽略)。然而,异常不会被抛出异常类。
      - 错题2:
      - 理解情况:这两个例外都是RuntimeException的子节点,它本身就是一个例外的子节点。错误是一个可抛出的对象,它与异常不同,而非法访问异常和CheckedException是异常的子元素,而不是RuntimeException。
      - 错题3:
      - 理解情况:保留的单词投掷用于在检测异常时抛出异常,如:如果(得分<0)抛出新的非法测试分数异常(“输入分数”+分数+“为负”);
      - 错题4:
      - 理解情况:B、C和D的答案都是正确的,runtimeexception是可抛出的对象,并且不是错误类的一部分,而且两种类型的runtimeexception都是算术异常和NullPointerException。不是runtimeexception异常的例外包括各种检查异常,但是runtimeexception不是检查异常。
      - 错题5:
      -理解情况:输入到Java程序是很困难的,因为它需要大量的开销。扫描器类实现了所有的开销,这样程序员就不必看到它了。因此,扫描器是在没有细节的情况下执行输入操作的抽象。这些细节包括导入java。io类,以某种方式处理ioexception,从标准输入流中输入,将输入划分为单个令牌,并根据需要将每个令牌转换成请求表单。

    点评模板:

    点评情况

    • 博客中值得学习的或问题:

      • 课本知识点总结充分。
      • 不懂得积极通过网络解决
      • 这是不是排版出现点问题了啊
    • 基于评分标准,我给本博客打分:14分。

    点评过的同学博客和代码

    • 本周结对学习情况

      • 20172310
      • 结对学习内容
        • 第十一章和十二章的学习
        • 四则运算的代码完善与补充
    • 上周博客互评情况

    其他(感悟、思考等,可选)

    总的来说,这两章很难。都很难理解,在第十章中难点是IO流,其中有的部分直到现在还没完全理解。o(╥﹏╥)o~~看来只能在后面自己看视频慢慢的补上去了。对于第十二章,虽然课本上的知识点很少,但是道理我都懂,就是代码看不懂······ 这个还得接下来问同学了。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 075/200 1/1 05/20
    第二周 560/500 1/2 13/38
    第三周 972/1000 1/4 21/60
    第四周 694/1666 1/5 21/90
    第五周 1544/3095 1/6 30/90
    第六周 600/3627 1/7 30/120
    第七周 544/4200 2/9 20/140
    第八周 907/5107 2/10 20/160
    第九周 700/5807 1/11 20/180

    参考资料

    1.IO流-File类
    2.递归与迭代详解
    3.杨辉三角的排版

  • 相关阅读:
    CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
    如何正确且成功破解跨平台数据库管理工具DbVisualizer?(图文详解)
    [转]【HTTP】Fiddler(二)
    [转]jQuery UI Dialog Modal Popup Yes No Confirm example in ASP.Net
    [转]artDialog
    [转]GridView排序——微软提供Sort
    [转]GridView中直接新增行、编辑和删除
    [转]asp.net的ajax以及json
    [转]JQuery Ajax 在asp.net中使用总结
    [转]Jquery easyui开启行编辑模式增删改操作
  • 原文地址:https://www.cnblogs.com/dky-wzw/p/9004756.html
Copyright © 2011-2022 走看看