20155303 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

一、实验内容及步骤

(一)使用JDK编译、运行简单的java程序

  • 命令行下的程序开发

步骤一(新建文件夹):打开windows下的cmd → 输入cd Code命令进入Code目录 → 输入md 20155303test建立以自己学号命名的文件夹 → 输入cd 20155303test进入文件夹 → 输入md exp1建立“实验一”文件夹 → 输入cd exp1进入“实验一”文件夹

步骤二(编译、运行java程序):使用vim编辑器编辑java程序 → 在命令行下编译、运行

(二)使用IDEA编辑、编译、运行、调试Java程序

1、新建「HelloJDB」类,输入如下代码:

2、在需要设置断点的一行左侧单击鼠标,出现红色圆点。比如如下在第六行设置了断点:

在上方Run菜单找到Debug...进行单步调试:

截止到第六行运行结果如下:

3、继续向下执行,可以单击Step Over,执行完方法。可以看到运行结果sum=11

『注意』:常用调试快捷图标功能总结如下:

① Step Over(F8):程序向下执行一行(如果当前行有方法调用,这个方法将被执行完毕返回,然后到下一行)

② Step Into(F7):程序向下执行一行。如果该行有自定义方法,则运行进入自定义方法(不会进入官方类库的方法)

③ Force Step Into:进入任何方法

④ Step Out(Shift+F8):如果在调试的时候进入了一个方法,并觉得该方法没有问题,就可以使用stepout跳出该方法,返回到该方法被调用处的下一行语句。值得注意的是,该方法已执行完毕。

⑤ Run to Cursor:将程序运行到光标处。

4、如果想判断循环内部是否出问题?比如我们想进入for循环,在第十行设置断点,右击出现对话框,在里面填写自己想测试的数值,如i==50,再单击resume图标或者快捷键F9即可得到运行结果。

二、练习:实现学生成绩管理功能,并进行测试。

『要求』:通过命令行和IDEA两种方式实现,在IDEA下练习调试程序。

  • 设计思路:

首先要明白想让这个程序做一些什么事?以我的这道练习题为例,我想让它完成“添加学生”、“更新学生基本信息”、“删除学生信息”、“按照成绩排序”和“根据学号判断学生是否存在并查找学生”五项功能。

其次,要将自己的想法通过编程实现。基于以上需求,我设计了一个Student类(包含以上三项信息)和一个Manage类(实现各种功能):

最后,设计一个测试类,通过调用构造函数验证程序。如果出现bug再进行调试修改。

  • 命令行实现:

1、添加学生

2、更新学生基本信息

3、删除学生信息

4、按照成绩排序

5、根据学号判断学生是否存在并查找学生

6、退出程序

  • IDEA调试:

比如想要了解courseSort()方法的执行情况,可以在该行设置断点,单击Step Over(或快捷键F8)执行完该方法,并查看执行结果:

如果对该方法有疑问,可以在该行设置断点,单击Step Into(或快捷键F7)进入内部:

即可查看该方法的详细执行过程。

三、实验过程中遇到的问题

  • 『问题一』:第一次设计的代码只能完成按成绩排序的功能,功能非常单一,使用价值不高。感谢娄老师的指点,经修改目前代码可以完成添加学生更新学生基本信息删除学生信息按照成绩排序根据学号判断学生是否存在并查找学生五项功能。程序还有很大的提升空间,可根据实际需要继续开发程序功能。

  • 『问题二』:在命令行下运行出现了中文乱码问题,是因为windows下默认的编码方式与IDEA设置的编码方式不同。将编码方式转为UTF-8即可成功运行。

  • 『问题三』

马超同学针对我编写的“成绩管理系统”提出疑问:如果有非法输入如何处理?

我的程序的确疏忽了异常处理,鉴于我的测试类用到了Scanner()方法,查询API文档可知这个方法可能抛出IOException异常,另外输入格式与期望格式不匹配时还会抛出InputMismatchException异常,所以应添加 try{...}catch (Exception e) {System.out.println(e);} 捕捉异常。

如果输入不合法,会出现以下异常提示:

感谢马超同学的建议!

四、实验体会与总结

“纸上得来终觉浅,绝知此事要躬行。”看书看了这么久,代码也按照书上敲了近千行,而自己究竟掌握了多少呢?实验给了我们一个将课本理论付诸实践,并检验自我的机会。

这次实验题目比较简单,不过要想达到对代码“信手拈来”的程度并不容易。所以说,敲代码前先在脑海中构建好程序框架,就显得尤为重要。先构思好想干什么,再一步一步用代码实现自己的想法,最后有余力还可以优化程序,提升程序友好度,增加功能等等,我认为这才是编写一个程序完整的步骤。

步骤 耗时 百分比
需求分析 3min 4%
设计 10min 13%
代码实现 45min 62%
测试 5min 7%
分析总结 10min 14%

20155303 《Java程序设计》实验一(Java开发环境的熟悉)实验报告的更多相关文章

  1. 20145308刘昊阳 《Java程序设计》实验一 Java开发环境的熟悉 实验报告

    20145308刘昊阳 <Java程序设计>实验一报告 实验名称 Java开发环境的熟悉 实验内容 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试J ...

  2. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验一 Java开发环境的熟悉 实验报告

    20175316 盛茂淞 2018-2019-2 <Java程序设计>实验一 Java开发环境的熟悉 实验报告 一.实验要求 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA ...

  3. 20165327《Java程序设计》实验一 Java开发环境的熟悉 实验报告

    20165327<Java程序设计>实验二 <Java面向对象程序设计>实验报告 实验二 <Java面向对象程序设计> 一.实验报告封面 课程:Java程序设计 班 ...

  4. 20165205 实验一 java开发环境的熟悉 实验报告

    20165205 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:刘喆君 学号:20165205 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验 ...

  5. 实验一《开发环境的熟悉》&实验二《固件设计》

    20145312&20145338 实验一<开发环境的熟悉>&实验二<固件设计> 合作博客链接:http://www.cnblogs.com/yx2014531 ...

  6. 20162327实验一Java开发环境的熟悉实验报告

    20162327 <程序设计与数据结构>第一次实验报告 基础知识 1.JDB的使用 使用JDB调试程序需要以下五个步骤: 1.设置断点 stop in 2.run 3.print 4.ne ...

  7. 20145233韩昊辰 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)

    20145233 <Java程序设计>实验报告一:Java开发环境的熟悉 实验要求 使用JDK编译.运行简单的Java程序: 使用IDEA 编辑.编译.运行.调试Java程序. 实验内容 ...

  8. 20175236 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:温丰帆 学号:20175236 指导教师:娄嘉鹏 实验日期:2019年4月2日 实验时间:13:45 - 15:25 实验序号:实验一 ...

  9. 20165234 《Java程序设计》实验一 Java开发环境的熟悉

    一.实验报告封面 课程:Java程序设计  班级:1652班  姓名:刘津甫  学号:20165234 指导教师:娄嘉鹏  实验日期:2018年4月2日 实验时间:15:35 - 17:15  实验序 ...

  10. 2018-2019-2 20175227张雪莹 《Java程序设计》 实验一 Java开发环境的熟悉

    2018-2019-2 20175227张雪莹<Java程序设计> 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号:2017 ...

随机推荐

  1. 在sql server ide里数据修改数据

    在sql server 的客户端工具ssms里,只有在工具里打开后直接修改. 除了用这种方法外,还有其它方法可以改吗?比如像pl/sql里的for update sql server的客户端功能比较差 ...

  2. 把打印的内容保存成文件(PDF)

    有时候网页的内容和打印的内容会有一些差异,需要把打印的内容倒出来.是有办法的. 1.以谷歌为内核的浏览器示例,按Ctrl+p快捷键打开打印对话框,如图: 2.点击更改按钮,更改打印机,会出现选择目标打 ...

  3. es各类SearchType的意思

    元素 含义 QUERY_THEN_FETCH 查询是针对所有的块执行的,但返回的是足够的信息,而不是文档内容(Document).结果会被排序和分级,基于此,只有相关的块的文档对象会被返回.由于被取到 ...

  4. hbase 跳转过滤器skipfilter

    用于跳过整个行键,需要和其他过滤器一起使用,本例SkipFilter和ValueFilter过滤器组合使用过滤不符合条件的行, 如果不配合SkipFiter,ValueFilter只过滤单元值包含的列 ...

  5. Udp广播的发送与接收(C#+UdpClient) 上篇

    简介: Udp广播消息用在局域网的消息传递很方便.本文使用UdpClient类在WPF下实现Udp广播收发 发送: void MainWindow_Loaded(object sender, Rout ...

  6. Climbing Stairs - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Climbing Stairs - LeetCode 注意点 注意边界条件 解法 解法一:这道题是一题非常经典的DP题(拥有非常明显的重叠子结构).爬到n ...

  7. 20135239 Linux内核分析 期中总结

    期中总结 链接 网易云课堂 MOOC 摘录与实验内容 第一周: http://www.cnblogs.com/20135239-yxlm/p/5216842.html 第二周: http://www. ...

  8. linux内核设计与实现一书阅读整理 之第三章

    chapter 3 进程管理 3.1 进程 进程就是处于执行期的程序. 进程就是正在执行的程序代码的实时结果. 内核调度的对象是线程而并非进程. 在现代操作系统中,进程提供两种虚拟机制: 虚拟处理器 ...

  9. [SCOI2016] 背单词 (Trie树)

    $pdf\space solution$      link #include<iostream> #include<algorithm> #include<cstrin ...

  10. struts的namespace理解

    转载: namespace决定了action的访问路径,默认为"",可以接受所有路径的action namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的acti ...