zoukankan      html  css  js  c++  java
  • 2018-2019-2 20175211 实验一《Java开发环境的熟悉》实验报告

    代码托管

    一、命令行下Java程序开发

    在码云上建立以学号命名的仓库,再克隆到本地,建立子目录bin和src,使用vim编写程序(见码云链接exp1.java),javac编译后使用java命令运行,输出自己的学号姓名。

    输入图片说明

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

    (1)建立与Git的链接

    首先从码云将仓库克隆到本地,选择File->New->Project from Version Control->Git,然后将仓库的链接复制到url栏并设置路径。
    这样就完成了IDEA与码云的链接。

    输入图片说明
    输入图片说明

    (2)开发、调试程序

    右击建立的目录,选择New->Java Class,就可以创建新的类。
    调试代码时可以在行号左边单击设置断点,使用Alt + shift + 9开始debug,接下来可以使用F7:step into 和F8:step over单步执行。
    遇到循环是可以设置条件断点,右击断点,设置条件i==50后按F9运行到条件处

    输入图片说明

    (3)上传代码至码云

    ctrl + k commit

    输入图片说明

    ctrl + shift + k push

    输入图片说明

    三、练习

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

    我想创建一个Fibonacci类来实现

    输入图片说明

    用数组迭代来避免递归效率过低的问题,代码见托管链接

    测试了正常、边界(n=0)和异常(n<0)情况

    输入图片说明

    四、问题及解决

    • 问题1:从码云克隆仓库以后,传下来的java无法运行,也无法新建类。原因是IDEA没有把这个目录当做源码目录。

    输入图片说明

    • 问题1解决方法:右击src目录,选择Mark dictory as中的source root就可以解决。

    输入图片说明

    操作后变成这样

    输入图片说明

    • 问题2:斐波那契数列类在接收到负数参数时,无法很好的反馈异常,本来想在存入数据时判断calcNextFib()结果是否为-1来处理负数输入,但还是抛出异常。
    import java.util.Arrays;
    
    public class Fibonacci {
        int length;
        int[] fib;
    
        Fibonacci(int n) {
            this.length = n;
            fib = new int[length];
            System.out.println("Please Input a positive number");
            if(calcNextFib(n)<0){
                for (int i = 0; i < n; i++) {
                    fib[i] = calcNextFib(i);
                }
            } else {
                System.out.println("Invalid Input");
            }
        }
    
        private int calcNextFib(int n) {
            if (n == 0 || n == 1) {
                return 1;
            } else if (n > 1) {
                return fib[n - 1] + fib[n - 2];
            } else {
                return -1;
            }
        }
    
        void printFib() {
            System.out.println(Arrays.toString(fib));
        }
    }
    
    

    输入图片说明

    • 问题2解决方案:查看文档,搜索抛出的异常

    输入图片说明

    原来是数组定义的时候长度不能为负数,所以在给数组赋值的时候检查并没有什么用。而我用这种方式来构造斐波那契数列,正好可以用数组长度来检测输入数据的合法性,所以我想到可以直接catch这个异常,修改代码如下

    ···
        Fibonacci(int n) {
            this.length = n;
            try {
                fib = new int[length];
            } catch (NegativeArraySizeException e) {
                System.out.println("Please Input a positive number");
            }
            for (int i = 0; i < n; i++) {
                fib[i] = calcNextFib(i);
            }
        }
    ···
    

    之后我又测试了长度为0时,是可以的,结果创建了一个空数组,测试结果如下

    输入图片说明

    五、学习总结

  • 相关阅读:
    Apache POI 示例
    使用wsimport生成webservice客户端代码
    监听器
    @WebFilter注解
    事务
    k8s的deployment应用
    k8s 组件架构
    使用kubeadm安装kubernetes1.12.1
    轻量级批量管理工具pssh
    使用Bind服务配置DNS服务器
  • 原文地址:https://www.cnblogs.com/20175211lyz/p/10626275.html
Copyright © 2011-2022 走看看