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

时间: 2024-10-28 11:28:12

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

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

课程:<程序设计与数据结构>班级: 1823姓名: 华罗晗学号:20182308实验教师:王志强实验日期:2019年9月30日必修/选修: 必修 1.实验内容 (一)Java Socket编程 1.学习蓝墨云上教材<Java和Android编程>“第16章 输入/输出 ”和“第22章 网络”,学习JavaSocket编程2.结对编程.结对伙伴A编写客户端SocketClient.java,结对伙伴B编写服务器端.3.截图加学号水印上传蓝墨云,代码push到码云,并撰写实验报告. (

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

20182308 2019-2020-1 <数据结构与面向对象程序设计>第10周学习总结 教材学习内容总结 有关于图的课堂内容: 邻接矩阵.邻接表,图的数组表示法.一个字符串上的数组就可实现数组.需要掌握. 我们简单提到了其他以下几种图:边集数组.无向图邻接表.逆邻接表.十字链表.邻接多重表(比较复杂,老师也没有讲) 图的遍历以及编码实现主要包括以下两大块的内容:前序中序后序的实现:广度优先搜索.深度优先搜索两种搜索方式的实现. 教材学习中的问题和解决过程 问题1:图和树有什么区别?我们说的完

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

教材学习内容总结 初步了解了实例化数据和编写类的一些方法.再一次了解了封装的概念(并结合了第八章的继承的有关内容),通过书上关于UML的内容,编写了第一个UML视图. 了解了在同一个类中的return和this等命令的用法. 参照书本和教程,学习了一些关于TDD调试的思想和方法. 教材学习中的问题和解决过程 问题一:可见性修饰符是什么?它存在的意义是什么? 问题一解决过程:翻阅课本P108的有关内容,并且往后预习学习第八章中有关继承的内容.可见性修饰符的一个典型例子就是protected,这样的

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

学号 2019-2020-1 <数据结构与面向对象程序设计>实验六报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 华罗晗 学号:20182308 实验教师:王志强 实验日期:2019年10月21日 必修/选修: 必修 1.实验内容 1.链表练习,要求实现下列功能: 通过键盘输入一些整数,建立一个链表: 这些数是你学号中依次取出的两位数. 再加上今天的时间. 例如你的学号是 20172301 今天时间是 2018/10/1, 16:23:49秒 数字就是 20, 17,

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

20182327 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名:赵天昊 学号:20182327 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 (1) 编写简单的计算器,完成加减乘除模运算. (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. (3) 编写测试代码,测试验证. 2. 实验过程及结果 不多说,上

20182319《数据结构与面向对象程序设计》实验二报告

20182319 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 彭淼迪 学号:20182319 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 (1) 编写简单的计算器,完成加减乘除模运算. (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. (3) 编写测试代码,用规定方法测试验证. 2. 实验过程及结果

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

20182331 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 高宽让 学号:20182331 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 (1) 编写简单的计算器,完成加减乘除模运算. (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. (3) 编写测试代码,测试验证.(https://www.cnb

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

20182330 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 魏冰妍 学号:20182330 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 编写简单的计算器,完成加减乘除模运算. 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. 编写测试代码,测试验证. 2. 实验过程及结果 编写简单计算器,借鉴c语言语法

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

20182311 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 冷冲 学号:20182311 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 (1) 编写简单的计算器,完成加减乘除模运算. (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. (3) 编写测试代码,测试验证.(https://www.cnbl