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)_百度知道》
posted on 2019-09-16 22:47 20182308hlh 阅读(145) 评论(0) 编辑 收藏 举报