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

时间:2024-01-11 11:26:20

20172306《Java程序设计》第九周学习总结

教材学习内容总结

第十一章:

  1. try-catch语句。其中还有finally语句。try是进行某些操作,catch是捕获异常,并通过某些异常来进行某些操作。finally是无论是否有异常都会进行的语句。可以没有catch语句。
  2. 异常的传递。我觉得传递,主要是某地方的异常是由其他的方法引起的,异常就会传递到那个方法上。书中的例子可以很好的表现出来。
  3. IO异常。书中的内容主要是围绕异常来写。老师在蓝墨云中有写有关IO更为详细的内容。例如创建文件,写入文件,读取文件等等。

第十二章:

  1. 递归和循环是差不多的但是还是有不同的。对于死循环和死递归,死循环会一直循环运行,而死递归会出现溢出。因为空间是有限的。
  2. 通过迷宫旅行和汉诺塔问题的模型,我个人学习到的是,考虑问题需要详细一些。具体的代码如何编写,我认为更重要的是理解它是如何进行操作的。

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

  • 问题1:什么是方法调用堆栈踪迹?

  • 问题1解决方案:我上网查了一下。20172306《Java程序设计与数据结构》第九周学习总结

  • 问题2:对于eg11.2中一行代码:district = Integer.parseInt(code.substring(3,7));中(3,7)不明白是多少到多少?

  • 问题2解决方案:利用IDEA可以看到,substring(begineIndex,endIndex);我又问了同学,知道了这个应该是索引3,4,5,6。没有7。

  • 问题3:20172306《Java程序设计与数据结构》第九周学习总结

  • 问题3解决方案:最开始没有理解它start,end,temp的含义。后来问了同学,加上自己的理解。知道其实这个方法,就是我们平时的时候,通过不断调用的另一个柱子以实现从大到小的排列的这么一个过程。

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

  • 问题1:在进行课后的实验的时候,有这样的问题20172306《Java程序设计与数据结构》第九周学习总结,不知道是为什么

  • 问题1解决方案:原来是在IDEA中,我应用了中文,那么我就应该20172306《Java程序设计与数据结构》第九周学习总结,从而可以应用中文。

  • 问题2:在做PP12.1时,最开始我想的是根据书中的迷宫旅行的代码的样式,对第五章的Tester进行改造。20172306《Java程序设计与数据结构》第九周学习总结,但是结果却是错误的。即使是用书中的例子abracadabra,结果出来也是IS而实际应该是NOT

  • 问题2解决方案:最开始我想的是,是不是我的条件出现了错误。我进行了略微调整,发现依旧是错的。后来我在想,这个不通,可不可以看看尝试一下汉诺塔的那个模型,后来用了另一种方式成功了。

  • 问题3:在做PP12.9的习题时,花费了很久的时间。最开始我找不到它的逻辑。后来想到可以按照行和列的数组的形式。我就在书中写了这个20172306《Java程序设计与数据结构》第九周学习总结,然后编了一个递归的类。但是出现了这个问题20172306《Java程序设计与数据结构》第九周学习总结

  • 问题3解决方案:我上网查了一下,这个意思就是栈溢出,说明我的表达式不够优化。所以又进行了修改。

  • 问题4:还是对于PP12.9的问题。我可以运行了,但是结果是20172306《Java程序设计与数据结构》第九周学习总结 我就改了一下,但是又变成了20172306《Java程序设计与数据结构》第九周学习总结

  • 问题4解决方案:本来我就打算就这样吧,后来还是问了一下同学,才知道我应该怎么改,然后得到了符合条件的结果

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

代码托管

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

上周考试错题总结

  • A finally clause will execute

    A only if the try statement that precedes it does not throw an exception

    B only if the try statement that precedes it throws an exception that is caught

    C only if the try statement that precedes it throws an exception that is not caught

    D only if the try statement that precedes it throws an exception, whether it is caught or not

    E in any circumstance 本题选E ,这题是我的马虎。finally会在任何情况下都会执行。
  • The Scanner class provides an abstraction for input operations by Scanner类为输入操作提供了一个抽象

    A using try and catch statements to catch any IOException instead of throwing the Exception elsewhere(使用try和catch语句捕捉任何IOException,而不是将异常抛出其他地方)

    B parsing input lines into individual tokens(将输入行解析为单个记号)

    C performing conversion operations from String to the appropriate type as specified in the Scanner message(在扫描消息中指定的从字符串到适当类型的转换操作)

    D inputting from the standard input stream if create is called using System.in(如果创建的调用是使用系统的那么从标准输入流中输入。)

    E all of the above 本题选E
  • The term "exception propagation" means

    A an exception is caught by the first catch clause

    B an exception not caught by the first catch clause is caught by an outer (enclosing) catch clause(不被第一个catch子句捕获的异常被一个外部(封闭的)catch子句捕获)

    C exceptions are caught, sequentially, by catch clauses in the current try block

    D exceptions always are caught by the outermost try block(异常总是被最外层的try块捕获)

    E none of the above 本题选E
  • A method that uses the Scanner class to obtain input does not require either catching or throwing an IOException. This is because

    A the Scanner class does not call upon any classes that throw checked exceptions

    B the Scanner class' methods call input methods in try statements and catch IOExceptions so that they are handled directly in the Scanner class

    C the Scanner class uses JOptionPane dialog boxes instead of java.io classes so that it does not have to deal with IOExceptions

    D the Scanner class overrides the class IOException making it an unchecked exception

    E none of the above, methods do require handling IOException even if thrown by a method in a Scanner class 本题选B
  • The following defines a new Exception called AnewException.

    public Exception ANewException

    {

    public ANewException(String message)

    {

    super(message);

    }

    }

    A true

    B false 本题选B 它应该定义的是一个类,而不应该是Exception.
  • If an exception arises in a catch statement, and the exception is of the type caught by the catch statement, then the catch statement catches the same exception. For instance, if the following catch statement first catches an ArithmeticException and, while executing, throws another ArithmeticException, it is able to catch the second ArithmeticException as well the first.

    catch (ArithmeticException ex) {...}

    A true

    B false 本题选B 一个exception导致当前语句停止执行和控制转移到第一个捕获(在当前语句之后)的转移,从而捕获异常。因此,catch语句不会捕捉从自身内部抛出的异常,尽管catch语句可以嵌套在它的内部附加尝试和捕获语句。
  • The difference between the throw reserved word and the throws reserved word is that throw is used within a method body, while throws is used within a method header.

    A true

    B false 本题选A,这个主要是throws和throw的区分。

结对及互评

点评模板:

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

    • 我觉得他可以在看书的时候思考是一件很值得学习的事情。对于错误和异常的那个问题,我看到的时候,我在想我为什么没有想到呢。而且看了他的解答,我觉得还是很容易懂的。
  • 代码中值得学习的或问题:

    • 他在问题中可以学到新的东西,这是很好的一个习惯,值得我学习。
  • 基于评分标准,我给本博客打分:8分。

点评过的同学博客和代码

  • 本周结对学习情况
    • 20172325
      • 一起学习了第十一章和第十二章的内容。
      • 继续了四则运算的编程。

其他

这两章是在老师讲了之后我才去看的。基本是看得懂的。但是老师说对于IO异常这个方面,更需要了解的是如何利用流进行读写文件等。这个方面我觉得我还不是很会,所以之后还会继续学习这个。而十二章,我觉得对于我来说,重点就是要了解它每一步的操作,因为我觉得书中的递归的代码写的十分的缜密,这个方面我也不擅长,就在编写后面的题时就可能想少东西,导致结果有问题。还需要学习。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 193/200 1/1 20/20
第二周 247/440 1/1 22/42
第三周 445/895 2/2 20/62
第四周 885/1780 1/1 43/105
第五周 775/2555 1/1 55 /160
第六周 1171/3726 1/1 38/198
第七周 596/4322 1/1 60/258
第八周 569/4891 2/2 55 /313
第九周 1890/ 6781 1/1 66/379

参考资料