2018-2019-2 20175320实验一《Java开发环境的熟悉》实验报告

一、实验步骤及内容

(一)带包程序的编译运行

1、使用mkdir命令创建如图所示目录

2、进入exp1下的src目录,在src目录中创建创建Hello.java的文件,并在文件内编写带包的程序。

3、编辑完成后使用cd ..命令返回exp1文件夹。

4、使用命令javac -d ./bin ./src/HelloJDB.java编译程序,命令java -cp ./bin gsj.HelloJDB运行程序。

5、在命令行中输入学号与姓名后回车即可得到运行结果

(二)IDEA下Java程序的开发与调试

1、按步骤安装好IDEA,并在界面中配置好JDK路径。

2、创建新项目并命名为HelloJDB,HelloJDB项目的src文件中建立新的类HelloJDB,在类中编写老师提供的如下代码:

1 public class HelloJDB {
2 public static void main(String[] args) {
3 int i = 5;
4 int j = 6;
5 int sum = add(i, j);
6 System.out.println(sum);
7
8 sum = 0;
9 for(i=0; i< 100; i++)
10 sum += i;
11
12 System.out.println(sum);
13 }
14
15 public static int add(int augend, int addend){
16 int sum = augend + addend;
17 return sum;
18 }
19}

3、在需要设置断点的行号后单击左键即可设置断点,在本次实验中我在第9行设置了断点。



4、单击菜单「Run」->「Debug...」,调试时程序停在第9行。



5、将断点改为条件断点,在断点处用鼠标右键单击,在弹出的属性框中设置i==50,按一下F9重新运行,之后可以在下面的窗口中看到i以及其他变量的值。





6、将断点改为临时断点,在断点处用鼠标右键单击,在弹出的属性框中选择「More」,在之后的窗口中选中「Remove Once hit」。





7、将断点改为方法断点,将光标移至怀疑出错的方法中的任意一行,使用菜单「Run」->「Toggle Method Breakpoint」即可。



8、可通过Step IntoStep Over图标进行单步运行,使用Resume图标重新调试

(三)练习实现Fibonacci数列功能,并进行测试(正常情况,异常情况,边界情况)。

在本次实验中我采用了递归的技巧,将递归写进Function类的fib方法中,这样在主类Fibonacci中就可以定义一个Function类的对象object,使用for循环并通过对象调用fib方法从而将第n个斐波那契数的值放入数组的第n个空间中,最后再使用for循环输出长度为n的斐波那契数列的每一个值。

实验代码如下:

import java.util.Scanner; //引入类库中的类
class Function { //Function类用于实现计算第m个斐波那契数的值
public int fib(int m) { //fib方法采用了递归的编程技巧
if (m == 1 || m == 2) { //当m=1或m=2时返回数值1
return 1;
} else {
return fib(m - 1) + fib(m - 2); //其他情况下返回方法的递归调用
}
}
}
public class Fibonacci{
public static void main(String[] args) {
Function object; //声明一个Function类的对象object
int m,i,fibonacci[];
object = new Function();
Scanner scanner = new Scanner(System.in);
System.out.println("输入斐波那契数的个数:\n");
m=scanner.nextInt(); //输入斐波那契数列的个数
while(m<=0){ //当输入不合法时重新输入,直到输入正确才退出循环
System.out.println("error,input again.\n");
m=scanner.nextInt();
if(m>0){
break;
}
}
fibonacci = new int[m]; //给数组分配内存空间
for(i=0;i<m;i++){
fibonacci[i]=object.fib(i+1); //将第n个斐波那契数放入数组的第n个空间中
}
for(i=0;i<m;i++){
System.out.printf("第%d个数是 %d\n",i+1,fibonacci[i]); //输出斐波那契数列
} }
}

运行结果如图:

二、实验时遇到的问题:

  • 问题1:在exp1目录中编译运行带包程序时出错
  • 问题1解决方法:原本在运行带包程序时我都是按书上的步骤进入包的上一级目录进行编译运行,这次更换目录后编译运行就显示找不到主类,但经过不断尝试后,发现可以使用javac -d <目标文件夹> <字节码文件路径>来进行编译,使用java -cp <包所在文件夹> 包名.主类名来进行运行。
  • 问题2:IDEA中断点右击无反应
  • 问题2解决方法:我在安装IDEA后添加了中文包,删除之后重新打开IDEA即可正常右击断点。
  • 问题3:斐波那契数列的程序在JDB中进行调试时需要输入数据,但此时键盘输入被JDB占用导致无法正常输入数据。
  • 问题3解决方法:上网查找资料后发现可以使用远程控制终端来进行调试,相关方法我已写入博客 解决键盘输入被JDB占用的问题

三、实验感想

我在本次实验中编译运行了包中的文件,学习了如何在IDEA中设置断点,调试程序,最后动手编写了一个输出斐波那契数列的程序,前两个实验巩固了学习Java编程基础,最后一个实验让我对输入,数组以及递归语句有了更深的理解。这次的实验看似简单,我在实际操作中还是出现了问题,这暴露出我在平时学习中对代码理解不够透彻,基础不够扎实等问题。Java的学习离不开上手练习,只有实际操作才会发现平时自己注意不到的问题。

附上PSP时间:

步骤 耗时 百分比
需求分析 15 13%
设计 15 13%
代码实现 45 39%
测试 25 22%
分析总结 15 13%

参考资料

2018-2019-2 20175320实验一《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. 20162327实验一Java开发环境的熟悉实验报告

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

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

    实验一Java开发环境的熟悉 实验内容 •命令行下Java程序开发 •IDEA下Java程序开发.调试 •练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序) •实现凯撒密码 ...

  7. 20175316 盛茂淞 实验一 Java开发环境的熟悉

    20175316 盛茂淞 实验一 Java开发环境的熟悉 实验目的 使用JDK编译.运行简单的Java程序 实验要求 1.建立"自己学号exp1"的目录 2.在"自己学号 ...

  8. 20155327实验一 Java开发环境的熟悉

    20155327实验一 Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的java程序 2.使用IDEA编辑.编译.运行.调试java程序 实验步骤 1.使用JDK编译.运行简单的jav ...

  9. 20165233 实验一 Java开发环境的熟悉

    20165233 实验一 Java开发环境的熟悉 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 2.完成实验.撰写实验 ...

  10. 20155231 java实验一 Java开发环境的熟悉

    20155231 java实验一 Java开发环境的熟悉 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 完成实验.撰写实验 ...

随机推荐

  1. SpringBoot之整合Redis分析和实现-基于Spring Boot2.0.2版本

    背景介绍 公司最近的新项目在进行技术框架升级,基于的Spring Boot的版本是2.0.2,整合Redis数据库.网上基于2.X版本的整个Redis少之又少,中间踩了不少坑,特此把整合过程记录,以供 ...

  2. Keras运行速度越来越慢的问题

    Keras运行迭代一定代数以后,速度越来越慢,经检查是因为在循环迭代过程中增加了新的计算节点,导致计算节点越来越多,内存被占用完,速度变慢.判断是否在循环迭代过程中增加了新的计算节点,可以用下面的语句 ...

  3. Deep Learning.ai学习笔记_第三门课_结构化机器学习项目

    目录 第一周 机器学习策略(1) 第二周 机器学习策略(2) 目标:学习一些机器学习优化改进策略,使得搭建的学习模型能够朝着最有希望的方向前进. 第一周 机器学习策略(1) 搭建机器学习系统的挑战:尝 ...

  4. 数组去重Demo引出的思考

    package com.pers.Stream; import java.util.*; import java.util.stream.Collectors; import java.util.st ...

  5. GopherChina 2018

    https://github.com/gopherchina/conference/tree/master/2018

  6. Linux下清理内存和Cache方法见下文:

    暂时目前的环境处理方法比较简单: 在root用户下添加计划任务: */10 * * * * sync;echo 3 > /proc/sys/vm/drop_caches; 每十分钟执行一次,先将 ...

  7. 时间序列异常检测算法S-H-ESD

    1. 基于统计的异常检测 Grubbs' Test Grubbs' Test为一种假设检验的方法,常被用来检验服从正太分布的单变量数据集(univariate data set)\(Y\) 中的单个异 ...

  8. 详解Docker的网络模式

    我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式:使用--net=host指定container模式:使用- ...

  9. CDC在sql server 2017中无法使用的问题

    Symptom === sp_MScdc_capture_job in the CDC job raised error message Msg 217, Level 16, State 1, Pro ...

  10. 【OpenFOAM案例】01 elbow

    本案例演示利用OpenFOAM的icoFoam求解器计算弯曲管道中的混合流动问题. 1 拷贝tutorials文件 启动终端,且拷贝tutorials文件夹中的文件.利用命令: cp -r $FOAM ...