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. angular 2 - 003 typescript

    http://www.typescriptlang.org/docs/index.html var book: string = "hellp angular 2"; var nu ...

  2. InfluxDB服务器启动流程

    操作系统 : CentOS7.3.1611_x64 go语言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 源码路径: github.com/influxdata/infl ...

  3. MFC通过button控制编辑框是否显示系统时间

    在dlg.h中public bool flag; 在构造函数中 flag=false; 在button的生成函数中 if(flag) { flag=false; //m_showtime.SetWin ...

  4. 阿里云物联网平台体验(NetGadgeteer+C#篇)

    目前对接阿里云物联网平台有多种软件和硬件,可以有多种不同语言来实现对接,比如c/c++,Java,JS,Python,C#等等,不过C#版本只有PC对接云平台的代码,嵌入式的目前还没有看到,所以本篇文 ...

  5. mysql分组用法

    --select num from 表 group by num --select num from 表 group by num,nid --特别的:group by 必须在where之后,orde ...

  6. MySQL技术内幕读书笔记(三)——文件

    目录 文件 参数文件 日志文件 套接字文件 pid文件 表结构定义文件 INNODB存储引擎文件 文件 ​ 有以下类型文件 参数文件:告诉MYSQL实例启动时在哪里找到数据库文件,并且制定某些初始化参 ...

  7. 【C++】C++中变量的声明与定义的区别

    声明(declaration):意味着告诉编译器关于变量名称.变量类型.变量大小.函数名称.结构名称.大小等等信息,并且在声明阶段不会给变量分配任何的内存. 定义(definition):定义就是在变 ...

  8. 【C#】解析C#中管道流的使用

    目录结构: contents structure [+] 匿名管道(anonymous pipe) 命名管道(named pipe) 管道为进程间通信提供了一种可能.管道分为两种,一种是匿名管道,另一 ...

  9. 我的IntelliJ IDEA 设置

    1.关闭代码折叠 2.设置代码格式 3.函数参数提醒

  10. Ubuntu18.04提示wifi无法连接

    [时间:2018-07] [状态:Open] [关键词:Ubuntu 18.04,wifi,apt-get,mount] 0 现象描述及背景 最近需要一个Ubuntu的系统作为开发环境,随机下载了v1 ...