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

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


2302学习总结博客目录:[1](http://www.cnblogs.com/hzy0628/p/8539037.html) [2](http://www.cnblogs.com/hzy0628/p/8584976.html) [3](http://www.cnblogs.com/hzy0628/p/8642935.html) [4](http://www.cnblogs.com/hzy0628/p/8671888.html)
## 教材学习内容总结

1.对对象创建和对象引用变量的声明及初始化有了了解,再就是了解到别名这一概念,还知道了Java的自动执行垃圾回收的操作。

2.第二节了解了String类的具体的提供的一些方法,从后面的包的概念中了解到String类所归属的包为java.lang,由于其是最基本的包,内嵌于程序中,可以直接使用。

3.在的这一节认识了几种常见常用的包,以及包中的类在使用的时候用使用import声明。

4.然后四五六节学习了Random类、Math类、及格式化输出的两种类,还有就是printf方法的使用,然后又学习相应类下提供的一些方法,及其类的调用,如Math类、NumberFormat类都是通过用类名调用静态方法来请求执行。

5.第七节简单认识了枚举型,它是属于一种安全类型。了解了序数值这一概念。
6.第八节看的迷糊,有些不懂,包装器的创建、使用还是有点不太明白。

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

  • 问题1:首先最不能理解的就SR3.19的题目,要求产生随机数(包含右边界),如(0,30]。

  • 问题1解决方案:我能编写出的语句为num = generator.nextInt(31);,可是这个所标识的区间为[0,30],我把左边界0也包括在内了,现在数学和计算机已经分不清了,还是不知道是不是我考虑的太多了。

  • 问题2:书上练习题SR3.21的b、c、d、e、f题。

  • 问题2解决方案:我全部误填为整型数,只是考虑了数学运算,没有考虑到输出的应该为浮点数,这里出错了不少,以后要想清楚计算机运算再往上写。

  • 问题3:为什么要使用枚举型,而不直接使用String变量直接赋值。

  • 问题3解决方案:这个看了答案以后我想了想应该是与其的安全性有关,可以保证该类型变量只能在枚举值中取值。

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

  • 问题1:书上的例题3.3编译正常,但结果却不正确,这个真的是按着书上敲都敲错了。

  • 问题1解决方案:我看着结果不正确,就试了试那个jdb调试,因为这个程序比较简单,很快就发现了问题。书上的代码我敲的时候把括号位置加的不正确,导致了这次结果不正确。

  • 问题2:练习题PP3.1理解错误,误以为要输出的为不超过5个字母加上两个数字,就用Random类产生0~5之间随机数num2,编出语句mut = first_name.substring(1,num2);,结果就是产生不出来,只产生后面的那两个数字。

  • 问题2解决方案:同学提醒后才知道理解错了题目意思,是要产出5个字母加2个数字,改正过来后就完成了题目。

  • 问题3:做PP3.2时编译错误,如图所示。

  • 问题3解决方案: 重新看了一遍这一节书上内容,明白了我题目中设置的A、B必须要是double类型的数据,这也恰好与之前的内容相联系,要将一个double类型的数据赋给int型的会提示警告,这也是第一次在自己编写代码过程中产生这个问题,需要多去关注。

代码托管

上周考试错题总结

  • 1.Given the following assignment statement, which of the following answers is true regarding the order that the operators will be applied based on operator precedence? a = (b + c) * d / e - f);(下面给定的赋值语句中,基于运算符优先级,对于将被执行操作的顺序,哪一个答案是正确的?)(+, *, /, -)

  • 解析:这道题是没有理解题意就开始选择,理解成了普通的算术规则,没有具体到本题当中,本题中首先算括号里面的,即加法运算,再进行乘法运算,其次是除法运算,最后的为减法运算。

  • 2.What is output with the statement System.out.println(x+y); if x and y are int values where x=10 and y=5? (如果x和y是int类型的数值,x=10,y=5,那么语句System.out.println(x+y);的输出是什么?)(15)

  • 解析:这个主要是上周两道题完全分不清了,自己又没有切身的实验过,导致这题和下一题全部弄错。这道题目就是正常的加法,得到15,输出结果也就是为15.

  • 3.What is output with the statement System.out.println(""+x+y); if x and y are int values where x=10 and y=5? (如果x和y是int类型的数值,x=10,y=5,那么语句System.out.println(""+x+y);的输出是什么?)(105)

  • 解析:这道题的输出就和上一题不同了,因为前面加了个空输出,后面就两个数字加法没有加括号,这就是简单的数字罗列,10和5分别摆出来就可以了,答案为105.

  • 4.What value will z have if we execute the following assignment statement? int z = 50 / 10.00; (如果我们执行下面的赋值语句,z将得到什么值?)

  • 解析:这道题说明我在上周的错题,这周还没有记住弄明白,上面的代码调试问题3就是这样的,同样的错误做题犯了一遍,实际敲代码中又出错一次。这里将不会有输出值,会提示警告,因为我们在进行压缩的转换,不会产生数值。

  • 5.You cannot cast a String to be a char and you cannot cast a String which stores a number to be an int, float or double.(你不能将字符串强制转换为char类型,也不能将一个字符串强制转换为int、float或double类型。)

  • 解析:没有任何机制可以把一个字符串转换成char或者其他数值型如int、float或double,这句话是对的,字符串不能转换为其他类型的数值。

  • 6.There are three ways that data conversion may occurby assignment, by promotion, by casting.(可以通过赋值转换、提升转换和强制转换三种方式来实现数据转换。)

  • 解析:这个是书上的原句,数据类型转换技术有三种,分别为赋值转换、提升转换和强制转换。

其他

感悟

这周的代码调试过程中,仍然还在出现很多语法错误,本以为自己已经算是熟练了一些,但其实不然,如遇到的问题方法名找不到,这个其实是在public static void main(String[] args )后面多加了个;,这就直接导致了编译错误,这些小细节一定要注意到,而且这周也学习了要去调用多种包下的类,这时候就开始有点手忙脚乱了,总是有些丢三落四,手忙脚乱,经常会出现错误,而且整个的编写真的开始有点顾不上,现在必须要大量的练习了,之前的程序都比较简单,不会出现现在的状况,以后应该是会越来越复杂,这就更需要现在去锻炼一下整个的编写顺序,能够保证自己不慌不乱,有条理地去编写程序。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 157/157 1/1 15/15
第二周 382/539 1/2 16/20
第三周 317/856 1/3 15/18

参考资料

posted @ 2018-03-25 10:01  ◕‿◕  阅读(266)  评论(2编辑  收藏  举报
© 2018 GitHub, Inc.