20182308 华罗晗 2019-2020-1 《数据结构与面向对象程序设计》实验二报告

Posted 77599aa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20182308 华罗晗 2019-2020-1 《数据结构与面向对象程序设计》实验二报告相关的知识,希望对你有一定的参考价值。

课程:《程序设计与数据结构》
班级: 1823
姓名: 华罗晗
学号:20182308
实验教师:王志强
实验日期:2019年9月16日
必修/选修: 必修

 

1. 实验内容

(1) 编写简单的计算器,完成加减乘除模运算。
(2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出。
(3) 编写测试代码,测试验证。(https://www.cnblogs.com/rocedu/p/4472842.html

2. 实验过程及结果

(1)编辑一个符合计算器要求的JAVA代码。(符合四则运算、检查除法中除数非0等一些条件)源代码大致如下二图所示。

技术图片技术图片

(2)为制作测试代码,必须将源代码改写为一个可引用的类,下图为改后的代码,很明显有了形参的输入,并且删除了许多输入、打印、循环的环节。这些都是在测试代码当中需要输入的值。

技术图片

(3)编写一个简单的测试代码,要求有明确的输入值、能够正确处理基本的四则运算。

技术图片

(4)源代码(计算器)的运行结果

技术图片技术图片

(5)测试代码的运行结果。

技术图片

3. 实验过程中遇到的问题和解决过程

问题一:如果把测试程序引用的类建立在源代码的基础上,那么判定循环用的变量要如何输入?“y/n”只能输入一次,如果输入了n那么就直接退出程序了;如果输入了y那么就会无限循环下去。

问题一解决方案:因为是测试用的子类,所以仅仅需要测试其基本功能,可以直接去掉循环等功能进行简化,仅仅检验其基本的一次性四则运算功能。

问题二:如图所示(其实不止这么一点,当初出问题的时候还有测试代码exp2test.java运行时候的一连串问题,只是现在还原不出来了)

技术图片

问题二解决方案:意识到问题是测试用代码exp2.java中,float c没有初始化。如果该函数在运行中出错,那么就没有输出值,也就不会有合法的return值,那么测试代码也无法正常运行。解决方法就是在exp2.java中,修改代码float c 为 float c = 2。即完成初始化。

问题三:(最开始遇到的问题)无法输入单个字符,用输入字符串的方式,例如以下代码:

Scanner scan = new Scanner (System.in);
String flag;
flag = scan.nextString();

显然是无法成功的。

问题三解决方案:

char flag = scan.next().charAt(0);

这个代码是正解。

其他(感悟、思考等)

1、java代码编写在许多方面都是和C语言有相通之处的。比如在考虑return值的时候,要考虑要return的值是否被定义了、是否被初始化了、在函数中是否能够被赋值。许多在C语言当中的基础逻辑在java中几乎全部适用。同时,C语言当中的形参实参等概念在java中也同样适用,只是不在同一个java文件当中,需要在另外一个java文件(比如本次实验当中的测试代码)中执行。

2、对于实验中出现的一个细小的编译问题,应该及时认识问题是什么、怎么解决,并且及时去解决。要不然容易引起连锁反应。

参考资料

1、《java怎么接收输入的char类型数据(Scanner)_百度知道》

 

以上是关于20182308 华罗晗 2019-2020-1 《数据结构与面向对象程序设计》实验二报告的主要内容,如果未能解决你的问题,请参考以下文章

20182308 华罗晗 2019-2020-1 《数据结构与面向对象程序设计》实验二报告

20182308 华罗晗 2019-2020-1 《数据结构与面向对象程序设计》第10周学习总结

20182308 华罗晗 2019-2020-1 《数据结构与面向对象程序设计》第4周学习总结

20182308 2019-2020-1 《数据结构与面向对象程序设计》实验六报告

哈夫曼编码实践纪录

20182308 2019-2020-1 《数据结构与面向对象程序设计》第5周学习总结