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时,是可以的,结果创建了一个空数组,测试结果如下

五、学习总结
- Intellj IDEA常用快捷键
- Java中数组长度可以为0但是不可以为负数
2018-2019-2 20175211 实验一《Java开发环境的熟悉》实验报告的更多相关文章
- 20145308刘昊阳 《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20145308刘昊阳 <Java程序设计>实验一报告 实验名称 Java开发环境的熟悉 实验内容 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试J ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验一 Java开发环境的熟悉 实验报告 一.实验要求 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA ...
- 20165327《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20165327<Java程序设计>实验二 <Java面向对象程序设计>实验报告 实验二 <Java面向对象程序设计> 一.实验报告封面 课程:Java程序设计 班 ...
- 20165205 实验一 java开发环境的熟悉 实验报告
20165205 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:刘喆君 学号:20165205 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验 ...
- 20162327实验一Java开发环境的熟悉实验报告
20162327 <程序设计与数据结构>第一次实验报告 基础知识 1.JDB的使用 使用JDB调试程序需要以下五个步骤: 1.设置断点 stop in 2.run 3.print 4.ne ...
- 实验一Java开发环境的熟悉
实验一Java开发环境的熟悉 实验内容 •命令行下Java程序开发 •IDEA下Java程序开发.调试 •练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序) •实现凯撒密码 ...
- 20175316 盛茂淞 实验一 Java开发环境的熟悉
20175316 盛茂淞 实验一 Java开发环境的熟悉 实验目的 使用JDK编译.运行简单的Java程序 实验要求 1.建立"自己学号exp1"的目录 2.在"自己学号 ...
- 20155327实验一 Java开发环境的熟悉
20155327实验一 Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的java程序 2.使用IDEA编辑.编译.运行.调试java程序 实验步骤 1.使用JDK编译.运行简单的jav ...
- 20165233 实验一 Java开发环境的熟悉
20165233 实验一 Java开发环境的熟悉 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 2.完成实验.撰写实验 ...
- 20155231 java实验一 Java开发环境的熟悉
20155231 java实验一 Java开发环境的熟悉 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 完成实验.撰写实验 ...
随机推荐
- C#学习笔记(34)——委托传值(回忆版)
说明(2018-4-6 20:31:03): 1. 昨天晚上看三层,看完第一天的最后一节,会员的修改和增加,感觉欲仙欲死,果断关机睡觉. 2. 上午搞了半天哈利波特的原版书epub的下载,结果都没发现 ...
- [加密]openssl之数字证书签名,CA认证原理及详细操作
转自:http://blog.sina.com.cn/s/blog_cfee55a70102wn3h.html 1 公钥密码体系(Public-key Cryptography) 公钥密码体系,又称非 ...
- 如何在云端部署SAP HANA实战, Azure 上的 SAP HANA(大型实例)概述和体系结构
什么是 Azure 上的 SAP HANA(大型实例)? Azure 上的 SAP HANA(大型实例)是一种针对 Azure 的独特解决方案. 除了提供 Azure 虚拟机以用于部署和运行 SAP ...
- 必读:Spark与kafka010整合
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/rlnLo2pNEfx9c/article/details/79648890 SparkStreami ...
- 搭建Pypi转发服务
有时候有些正式环境的机器,不能访问外网,就只能在能访问外网的机器上搭建一个转发服务. 一.安装包 pip install flask_pypi_proxy flask_pypi_proxy 二.启动 ...
- go关键字之type用法
1.定义结构体 type Student struct { name string code int } 2.类型别名 type i int64 var age i = 30 ...
- VS2017 配置QT5
QT安装 1. QT下载 2. 安装过程中,组件的选择(图自https://blog.csdn.net/gaojixu/article/details/82185694) 3. 安装完成 VS2017 ...
- JVM监控和调优常用命令工具总结
JVM监控和调优 在Java应用和服务出现莫名的卡顿.CPU飙升等问题时总是要分析一下对应进程的JVM状态以定位问题和解决问题并作出相应的优化,在这过程中Java自带的一些状态监控命令和图形化工具就非 ...
- Web 自动化测试
Selenium 名字的来源 在这里,我还想说一下关于 Selenium 名字的来源,很有意思的 : > : Selenium 的中文名为 “ 硒 ” ,是一种化学元素的名字,它 对 汞 ( M ...
- SetTimer API函数
位于user32.dll中,可以每隔一段时间执行一段时间执行一件事的时候,可以使用它. 使用定时器,通常告诉Windows一个时间间隔,然后Windows以此时间间隔周期性触发程序. 发送WM_TIM ...