20182318 2019-2020-1 《数据结构与面向对象程序设计》实验五报告
课程:《程序设计与数据结构》
班级: 1823
姓名: 王振澳
学号:20182318
实验教师:王志强
实验日期:2019年10月14日
必修/选修: 必修
1.实验内容
1.Android Stuidio的安装测试:
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十四章:
参考http://www.cnblogs.com/rocedu/p/6371315.html#SECANDROID,安装 Android Stuidio
完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号,自己学号前后一名同学的学号,提交代码运行截图和码云Git链接,截图没有学号要扣分
学习Android Stuidio调试应用程序
2.Activity测试
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十五章:
构建项目,运行教材相关代码
创建 ThirdActivity, 在ThirdActivity中显示自己的学号,修改代码让MainActivity启动ThirdActivity
3.UI测试
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十六章:
构建项目,运行教材相关代码
修改代码让Toast消息中显示自己的学号信息
4.布局测试:
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十七章:
构建项目,运行教材相关代码
修改布局让P290页的界面与教材不同
5.事件处理测试:
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十八章:
构建项目,运行教材相关代码
提交代码运行截图和码云Git链接,截图要有学号水印,否则会扣分
2. 实验过程及结果
过程:
- 实验一和实验二我是按照王老师的博客一步一步来的,代码王老师直接给出来了,我稍微修改一下就行
- Java和密码学:主要试验利用代码进行简单的凯撒密码加密与解密。
- 编写有理数/复数计算器:
远程有理数/复数计算器:利用第三个实验和第一个实验。将二者有机结合成为一个可以远程使用的简单远程计算程序。
3. 实验过程中遇到的问题和解决过程
- 问题1:服务器启动后客户端无法有效链接。
- 问题1解决方案:查看ip地址后发现是电脑设置的ip地址不对,导致无法连接。重新修改代码中IP地址数字解决问题。
- 问题2:客户端输入数据传给服务器后,出现大量错误提示,同时程序错误退出。
- 问题2解决方案:客户端输入的数据类型与服务器要求的类型不符合,导致服务器的计算程序无法正确处理这一字符串,并将他正确运算。
- 问题3:编的一部分类的代码,始终没有出现绿色的run按钮,也无法编译运行
问题3解决方案:实际上有些代码并不需要去编译运行,只要能够被引用就可以了。但是这类代码大都没有main类,要进行编辑和运行的话,只徐要在代码中加一个空的main类的。
其他(感悟、思考等)
java语言还是很难的,并没有我想的那么简单。许多的操作还是很复杂的,需要多上机练习
2.老师上课很快,内容很多难度较大。这要求我必须抓紧每一点时间去学习。参考资料
- 《Java程序设计与数据结构教程(第二版)》学习指导
...
教材学习内容总结
第九章 多态
- 后绑定。效率低于编译阶段的绑定效率。
- 学习练习如何利用继承方式来实现多态性。
- 学习练习如何利用接口来实现多态性。
多态性设计(多个不同对象执行相同的基本行为,并且行为的不同实现方式取决于对象的具体类型。)
第十章
- 异常处理(异常抛出的问题和处理异常的方法)
- 未捕获的异常。
- try-catch语句与finally子句。
- 异常传播。(就与传递性一样,举个例子:程序一存在异常,程序二调用程序一,程序二就会存在与程序一相同的异常。)
- 异常类层次结构。(许多类型的异常类都由Exception类派生,但定义各种异常的子类却分散定义在其他几个包中,继承关系可以跨越包边界。)
- 自定义异常与必检异常与免检异常。
- 字节流和字符流的掌握
flush的应用和追加
教材学习中的问题和解决过程
问题1:类与接口有什么不同
问题1解决方案:类可被实例化,接口不能被实例化。接口可以只包含抽象方法和常量。类提供了接口的实现。类层次和接口层次不能交叉。类可以用来派生一个新类,接口可用来派生一个新接口的实现。
问题2:字节流和字符流到底是什么?定义在java.io包中的那么多方法都怎么系统的理解?
问题2解决方案:在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。InputStream和OutputStream,两个是为字节流设计的,主要用来处理字节或二进制对象,Reader和 Writer.两个是为字符流(一个字符占两个字节)设计的,主要用来处理字符或字符串。字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
问题3:如何连续读入多条信息
问题3解决方案:flush追加配合循环语句的使用。即将flush追加放在循环中。应为flush一次加载100条信息,运行起来很难并且容易出错
代码调试中的问题和解决过程
- 问题1:错误信息提示:系统找不到指定路径-图片文件读写错误
- 问题1解决方案:创建新文件是路径设置错误,将路径改正到想储存的地方即可
- 问题2:如何实现try catch的连续多次引用?
问题2解决方案:将try catch与循环相结合即在try catch外一层设置无限循环,使用一个布尔数控制循环的终止。
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
- 错题1及原因( 单选题 | 1 分)
Comparing the amount of memory required by selection sort and insertion sort, what can one say?
A
.
Selection sort requires more additional memory than insertion sort
B
.
Insertion sort requires more additional memory than selection sort
C
.
Both methods require about as much additional memory as the data they are sorting
D
.
Neither method requires additional memory
E
.
None of the above
正确答案: D 你的答案: B
解析:选择排序和插入排序都可以“就地”实现。这意味着不需要额外的内存,排序后的数据只是在数据数组中进行重新排列。
- 错题2及原因
- Java allows one to create polymorphic references using inheritance and using interfaces.
A
.
true
B
.
false
正确答案: A 你的答案: B
解析:继承允许一个人使用一个基本变量来引用不同的后代成员,正确的变量将在执行过程中被使用。这就是多态性的作用。接口提供了类似的机制,但使用的是抽象方法,而不是继承中使用的具体方法。然而,效果是一样的。
- 错题3及其原因
- The type of the reference, not the type of the object, is use to determine which version of a method is invoked in a polymorphic reference.
A
.
true
B
.
false
解析;反了!决定调用哪个方法的是对象的类型,而不是引用的类型。
点评过的同学博客和代码
- 本周结对学习情况
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
第六周 | 1175/1000 | 3/7 | 22/60 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:24小时
实际学习时间:20小时
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)