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)_百度知道》原文地址:https://www.cnblogs.com/77599aa/p/11530792.html
- 网页优化系列一:合并文件请求(asp.net版)
- Windows下Thumbnail的开发总结
- 剑指OFFER之调整数组顺序使奇数位于偶数前面找(九度OJ1516)
- Linux架构
- 绘图: Python matplotlib简介
- 绘图: matplotlib Basemap简介
- GridView实战二:使用ObjectDataSource数据源控件(自定义缓存机制实现Sort)
- 把孩子打造成为码农
- 分享基于Qt5开发的一款故障波形模拟软件
- 剑指OFFER之打印1到最大的N位数(九度OJ1515)
- GridView实战二:使用ObjectDataSource数据源控件
- javascript实例:逐条记录停顿的走马灯
- Python标准库05 存储对象 (pickle包,cPickle包)
- macOS平台下虚拟摄像头的研发总结
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法