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

时间:2022-06-12 16:03:29

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

一、实验内容及知识点

  • 实验内容

    1.使用JDK编译、运行简单的Java程序;

    2.使用IDEA编辑、编译、运行、调试Java程序。

  • 实验知识点

    1. JVM、JRE、JDK的安装位置与区别;

    2. 命令行运行javac;java;javac -cp; java -cp;

    3. PATH,CLASSPATH,SOURCEPATH的设定方法与应用;

    4. 包管理:package;import;javac -d ;

    5. IDEA管理Java项目,调试:断点、单步执行等;

    6. Java基础语法:类型与类型转换;变量;运算符;流程控制等;

    7. JDK帮助文档的使用。

二、实验步骤

(一)命令行下Java程序开发

  • 根据要求建立2175214/exp1的目录

  • 20175214/exp1目录下建立src,bin等目录

  • src目录输入vim Hello.java进入编译界面,输入如下程序:

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

  • 使用cd ..返回到exp目录下,输入javac -d bin src/Hello.java将源代码编译到bin目录下;

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

  • 输入java -cp bin Hello运行程序,输入名字,得到结果。

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

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

  • 1、创建HelloJDB项目,在该项目下创建HelloJDB类,并输入代码:

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

  • 2、点击run运行代码(或快捷键Alt+Shift+F10):

  • 3、在要求的行数左边点击一下,设置断点(Ctrl+F8),然后点击Debug(Alt+Shift+F9),得到如下结果:

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

  • 4、然后单击菜单「Run」->「Debug...」Alt+Shift+F9)开始调试Java程序,得到如下结果:

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

  • 5、点击Step intoF7)或者StepOverF8)来使程序运行到下一步;

    • PS: Step into可以进入方法运行下一步,而Step Over是直接运行完方法.

      2018-2019-2-20175225 实验一 《Java开发环境的熟悉》实验报告
  • 6、设置条件断点,将程序里i的值设置为50:

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

  • 7、点击Resume(或快捷键F9)直接运行程序到下一个断点,也就是上一步设置的条件断点:

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

(三)练习

  • 1、题目选择:学号20175214,做第六题:
第六题: 实现求排列数P(n,m)的功能,m,n从命令行输入,并进行测试(正常情况,异常情况,边界情况)。
  • 2、设计分析:排列式公式P(n,m)=n!/(n-m)!0<m<=n,m可以等于0,n不能等于0,P(n,0)=1

  • 3、编程实现:

import java.util.*;

public class Permutation {
public static void main(String args[]) {
Calculate Calculate = new Calculate(); System.out.println("Please input n:");
Scanner reader1 = new Scanner(System.in); //输入n
int n = reader1.nextInt();
System.out.println("Please input m:");
Scanner reader2 = new Scanner(System.in); //输入m
int m = reader2.nextInt();
if (n <= 0 || m < 0 || n < m) { //排除异常情况
System.out.println("Input error:!");
System.exit(1);
}
int Result = Calculate.result(n, m);
System.out.println("The result is: " + Result); //输出结果
}
} class Calculate { //计算排列数
int x, p, q; public int result(int n, int m) { //计算结果并返回
p = Factorial(n); //调用阶乘方法
q = Factorial(n - m);
return (p / q); //返回结果
} public int Factorial(int a) { //计算阶乘
if (a > 0) {
x = 1;
for (int i = 1; i <= a; i++) {
x = x * i;
}
return x;
} else return 1;
} }
  • 4、程序测试

    - 正常情况

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

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

  - 异常情况

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

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

  - 边界情况

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

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

  • 5、遇到的问题
    • 1、运行输入3 3出现如下报错:

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

    • 解决:通过调试,以及测试其他数据,发现是阶乘方法未考虑参数为零的情况,修改成如下后解决:

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

三、实验体会与总结

  • 这次是第一次用IDEA进行调试,比JDB好用,快捷得多,界面也更加友好,快捷键不够熟练,平时用多试试。

  • 平时在学习Java的过程中,我大多都是在原样敲书里的代码,没有自己的思考,这次实验是真正自己设计并测试的程序,但是出现了很多我以前以为不会出现的愚蠢的错误,比如scanner的大小写之类的,给我提了个醒,以后要多加练习。