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. javascript umd esm slim

    在CDN的连接中看到多个连接时如何选择? JavaScript 模块现状 UMD和ECMAScript模块 https://cdn.bootcss.com/popper.js/1.13.0/esm/p ...

  2. 关于关键字 volatile

    关于 volatile 的使用,也是 C 语言面试的月经问题.标准答案来了: volatile is a qualifier that is applied to a variable when it ...

  3. C#模拟客户端发送数据示例

      在给一些客户端做服务器端支持时,发现他们提交上来的数据大都不是http请求格式,因而使用Request.Form获取不到内容,今天用C#做下模拟,并演示下数据接收. 1.发送文本 1).客户端发送 ...

  4. Java之NIO

    想要学习Java的Socket通信,首先要学习Java的IO和NIO基础,这方面可以阅读<Java NIO 系列教程>. 下面展示自己代码熟悉Java的NIO编程的笔记. 1.缓冲区(Bu ...

  5. PCB特征阻抗计算

    见教程:链接:https://pan.baidu.com/s/1V4UbEoKfMD1bilwu-Qwdyg 密码:ml6t

  6. nmon监控

    原文:https://www.cnblogs.com/wnfindbug/p/5719181.html 一.检查安装环境 # uname –a (查看操作系统信息,所检查服务器为64位操作系统) Li ...

  7. [转]论SOA架构的几种主要开发方式

    面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署.组合和使用.服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理 ...

  8. CentOS7搭建以太坊私有链

    1. 环境准备:Win10 64位安装 VM VirtualBox,操作系统版本: CentOS-7-x86_64-Everything-1611.iso(7.71G). 切换root账号,方便安装程 ...

  9. [Z] C#程序中设置全局代理(Global Proxy)

    https://www.cnblogs.com/Javi/p/7274268.html 1. HttpWebRequest类的Proxy属性,只要设置了该属性就能够使用代理了,如下: 1        ...

  10. [转]SpringMVC+ Mybatis 配置多数据源 + 手动切换数据源

    正确可行的解决方法:使用Spring提供的AbstractRoutingDataSource类来根据请求路由到不同的数据源.具体做法是先设置两个不同的dataSource代表不同的数据源,再建一个总的 ...