zoukankan      html  css  js  c++  java
  • 实验一 《JAVA开发环境的熟悉》实验报告

    课程:Java2实用教程 班级: 姓名: 学号:
    成绩: 指导教师: 实验日期:4月5日
    实验密级: 预习程度: 实验时间:
    仪器组次: 必修/选修:选修 实验序号:

    目录

    实验名称:实验一 Java开发环境的熟悉

    实验仪器:

    名称 型号 数量
    PC端 1

    实验内容、步骤与体会:


    一、实验一 Java开发环境的熟悉-1

    00 实验
    0 参考实验要求
    1 建立“自己学号exp1”的目录
    2 在“自己学号exp1”目录下建立src,bin等目录
    3 javac,java的执行在“自己学号exp1”目录
    4 提交 Linux或Window或macOS中命令行下运行Java的全屏截图, 运行结果包含自己学号等证明自己身份的信息


    二、实验一 Java开发环境的熟悉-2

    00 实验
    参考http://www.cnblogs.com/rocedu/p/6371315.html
    提交 Linux或Window或macOS环境中 IDEA中调试设置条件断点的全屏截图,截图打上自己学号的水印。
    其他内容包括截图在实验报告中体现

    步骤:

    1. 设置断点,选择菜单「Run」->「Debug...」开始调试程序运行至断点处,Step Over(F8) 单步运行;

    2. 多行运行,设置断点第 8 行,然后单击 Resume(F9) 运行至断点处;

    3. 通过条件断点,解决个大循环中间的问题:断点处单击鼠标右键,弹出断点属性框,设置条件“i==50”,单击 Resume(F9) 运行;

    4. 要跳出 for 循环,在 10 行设置条件断点,鼠标右击断点,点「More(Ctrl+Shift+F8)」打开断点设置窗口,选中「Remove Once hit」,Done 即可(或把光标移到第 10 行,选择菜单「Run」->「Toggle Temporary Line Breakpoint」或(Ctrl+Alt+Shift+F8) );

    5. 设置方法断点:把光标移到方法中的任一行,选择菜单「Run」->「Toggle Method Breakpoint」,单击 Resume(F9) 运行至断点处。


    三、实验一 Java开发环境的熟悉-3

    00 实验
    参考实验一 Java开发环境的熟悉(Linux + Eclipse)http://www.cnblogs.com/rocedu/p/4421202.html (三)练习
    提交自己练习项目的码云链接和运行结果的截图。

    实验题目6. 实现求排列数P(n,m)的功能,m,n从命令行输入,并进行测试(正常情况,异常情况,边界情况)。
    正常情况:n>=0且(n-m)>=0。例:n=4,m=3,P(n,m)=24。
    异常情况:n<0或(n-m)<0。例:n=3,m=4,Error。
    边界情况:MAX_INT=2147483647,13!=6227020800,则13!>MAX_INT,超出int容量。

    码云链接:( https://gitee.com/Yogile/YogileOne.git )。在仓库 2018-2019-第2学期Java 程序设计基础,项目名为:P(n,m) 。


    实验过程中遇到的问题以及解决方案

    1. 问题:在Linux中无法运行已经编译完成的源文件

    root@yogile-VirtualBox:/alive/string# javac -d bin string/name.java
    root@yogile-VirtualBox:/alive/string# java string/name
    错误: 找不到或无法加载主类 string.name
    

    或者是出现这种情况:

    root@yogile-VirtualBox:/alive/string# java -cp string name
    错误: 找不到或无法加载主类 name
    

    解决方案:

    两种情况均是解释文件的格式不对。解释器java.exe解释的并不是源文件本身,而是编译后的文件xxx.class。由于javac -d bin string/name.java将编译name.java生成的name.class字节码文件生成到bin文件夹中,所以应该用java -cd bin name运行。
    如果程序中含有package,需要在package定义的上一个目录中进行编译。

    2. 问题:阶乘的运算结果不单独运算,而是继续叠加。

    9!的值supnum=362880
    10!的值supnum=-1736015872
    

    解决方案:

    为什么9!的值是对的,但10!就不对了呢?
    重点是:类中的变量分为两种:成员变量和局部变量。成员变量在声明的方法外,成员变量的值一旦通过命令改变就不会恢复初始,进行垃圾回收。但局部变量在方法内,在方法运行完成后就会回收,下次再用方法时,会重新定义为初始值。
    而tet中的supnum是成员变量,supnum是不会随着tet中方法mult的结束而恢复初始1。在进行9!的运算后,supnum=362880;但在进行10!的运算的时候,supnum就不是1了,还是362880。这时进行的运算就是362880*10!,这个算式的结果超过了int类型的最大容量2^31-1,结果就变成了错误的值。

    3. 问题:阶乘的运算出现负数。

    认知不同基本数据类型的大小及调用。

    解决方案:

    对于复杂运算而言(阶乘等),计算的数值很容易超出初始值设定的范围(byte、int等)。
    编写程序的时候,要注重Java基本数据类型大小及其包装类
    否则运算结果会出现乱码或复数。


    体会

    JAVA的学习是进一步的,而非停留在阅读表面。
    学习JAVA开发真的有难度,精力的付出是学习好JAVA的基本,而耐心不只是学习JAVA,而且是学习所有东西的必要条件。
    实验是知识运用的输出。我在实验的过程中,确确实实是沉迷其中,每解决一个遇到的问题,都有一种成就感。


    PSP

    步骤 耗时 百分比
    需求分析 5min 5%
    设计 5min 5%
    代码实现 70min 70%
    测试 10min 10%
    分析总结 10min 10%
  • 相关阅读:
    shell中标准输出,标准输入,标准错误输出详解
    shell 脚本 编辑颜色代码
    Docker容器:磁盘&内存&CPU资源限制实战
    Linux crontab 详解
    vsftp虚拟用户
    学习kail linux 几个不错的网站
    多线程协作方法sleep、yield、wait、join和同步和安全等问题
    Redis 命令参考
    JVM的内存区域划分(网上找的)
    工业软硬件系统名词
  • 原文地址:https://www.cnblogs.com/Yogile/p/10661965.html
Copyright © 2011-2022 走看看