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

实验步骤

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

在Linux下运行结果:



在IDEA中运行结果:

(二)IDEA下Java程序开发、调试:学会通过调试(Debug)来定位逻辑错误

1.调试程序首先要会设置断点和单步运行。设置断点,在要设置断点的行号旁用鼠标单击一下就行(或使用Ctrl+F8快捷键)



2. 然后单击菜单「Run」->「Debug...」(或使用Alt+Shift+F9快捷键)开始调试Java程序

此时第5行代码没有被执行,变量sum的值并不是11,如图



3. 通过单步运行让程序运行到第6行,单步运行有两种:Step Into(快捷捷F7)和Step Over(快捷捷F8),优先使用Step Over,这时查看变量i的值,会看到sum等于11。如图:



4. 让程序直接运行到第9行,首先我们要在第9行设置断点,然后单击Resume图标(快捷键F9),如图:



5. 单步执行效率比较慢还导致另外一个问题,若一个大循环中间出了问题,这时可以通过条件断点解决问题。设置条件断点,我们在第9行左边断点处单击鼠标右键,弹出断点属性框,我们设置条件“i==50”,按F9,如图:



6. 临时断点,断点只中断一次,比如我们想把第9,10行的for循环一下子运行完,我们就需要在第12行设个条件断点。我们可以在第十二行设个断点,然后鼠标右击断点:然后点「More」或按快捷键Ctrl+Shift+F8打开断点设置窗口,选中「Remove Once hit」



7. 方法断点:认为某个方法出错了,就可以设置方法断点。把光标移到方法中的任一行,使用菜单「Run」->「Toggle Method Breakpoint」.

(三)练习

练习题目:实现求排列数P(n,m)的功能,m,n从命令行输入,并进行测试(正常情况,异常情况,边界情况)。

代码编写:

import java.util.Scanner;

class Arrangement{
int m,n;
int temp1=1,temp2=1;
void getMN(int x,int y){
n = x;
m = y;
}
int Arrangement(){
for(int i=1; i<=n; i++){
temp1 = temp1*i;
}
for(int i=1; i<=n-m; i++){
temp2 = temp2*i;
}
return temp1/temp2;
}
} public class Experiment1 {
public static void main(String[] args) {
System.out.println("请输入n和m:");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
while(m<=0||n<=0){
System.out.println("请输入大于0的数:");
n = in.nextInt();
m = in.nextInt();
}
while (n<m){
System.out.println("n应大于m,请重新输入:");
n = in.nextInt();
m = in.nextInt();
}
Arrangement arr = new Arrangement();
arr.getMN(n,m);
int result = arr.Arrangement();
System.out.println("result="+result);
}
}

写程序的时候考虑到了以下问题:

1.输入的n,m应当大于等于0

2.n应当大于等于m

因此输入n,m时,考虑到了边界值,使程序更健全。



用debug调试

实验中遇到的问题

Q:IDEA的快捷键和Windows有冲突,调试时会出现如按F8显示投影的相关内容。

A:同时按Fn+Esc,关闭Windows的快捷键

参考了[Link]https://zhidao.baidu.com/question/1178784346146518699.html

Q:在设置条件断点时还出现了如下问题:



A:在设置条件时,只输入了50,导致发生了错误,应该输入i==50.

Q:无法运行程序,出现了文件加时钟的符号



A:符号的意思是:java class located out of the source root.refer to the section Configuring Content Roots for details.经过查询,主要是因为没有设置output的路径,文件不可编译,所以会出现如上图标。

参考[Link]https://blog.csdn.net/jielinku29/article/details/79678467

代码托管Link

学习总结

在IDEA中学了一些简单快捷键的使用方法:

1.CTRL+Z 倒退(撤销)

2.alt+F8 debug时选中查看值

3.Alt+Shift+F9 选择 Debug

4.Alt+Shift+F10 选择 Run

5.Ctrl+Shift+F9 编译

6.psvm 生成main方法--public static void main(String[] args) { }

7.sout 生成--System.out.orintln()

这个代码是我自己第一次独立完成的程序,编完之后还输出了正确结果,并且也做到了边界测试,非常自豪。在编写过程中,还遇到一些知识性的问题,通过翻书查找,巩固记忆,锻炼了能力,纸上得来终觉浅,还是要亲身实践,自己去做,才可能发现自己的不足之处,加以改进,得到提升。

参考博客

快捷键的使用[Link]https://github.com/judasn/IntelliJ-IDEA-Tutorial/blob/master/keymap-introduce.md#ctrl

2018-2019-2 20175205实验一《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. php生成随机字符串可指定纯数字、纯字母或者混合的

    php 生成随机字符串 可以指定是纯数字 还是纯字母 或者混合的. 可以指定长度的. function rand_zifu($what,$number){ $string=''; for($i = 1 ...

  2. 更新node和npm到最新版本

    卸载 1.首先卸载nodejs,打开控制面板,然后找到程序卸载: 2.找到npm目录和npmcache 目录,直接删掉(一般情况下会在C:\Users\Caffrey\AppData\Roaming\ ...

  3. 小甲鱼Python第二十二讲课后习题

    笔记: 斐波那契数列的两种实现方式:   迭代的方式: 自己写的: def fab(n): n1 =1 n2 =1 n3 =1 if n < 1: return -1 if n ==1: ret ...

  4. Anaconda安装Package的问题(Permission Denied)

    最近需要用到低版本的pytorch,使用pytorch官网安装的pytorch版本是最新的0.4.1,而它的previous version的那个链接一直打不开. 因此考虑使用清华的镜像源: 1.In ...

  5. 为ivew的Page组件的跳页增加跳页确定按钮

    首次使用vue做后台管理项目,首次使用ivew框架,好不容易所有的功能都做完了,前几天产品经理让在每个列表的跳页后面加个‘确定’按钮,说没有确定按钮有点反人类,心想那还不分分钟的事儿嘛,立马回个‘好的 ...

  6. 第二次C语言实验

    Part1: printf(),scanf()函数的用法 /* C语言程序设计教程学习指导>p119 实验内容(2) 这是一个格式化输入输出函数及格式符使用练习 找出两处错误,修改并运行程序 为 ...

  7. 内置函数-max、min、round、sorted、ord、chr、any、all、dir、eval、exec、map、filter、reduce

    http://www.nnzhp.cn/archives/152 1.max,min,round print(max([3,4.563,3,6,2.5])) #取最大值,可循环参数即可,int类型的, ...

  8. pandas(三)

    合并数据集: 创建一个能创建dataframe的函数 def make_data(cols,ind): data={c:[strc(c)+str(i) for i in ind] for c in c ...

  9. JDK1.8 LongAdder 空间换时间: 比AtomicLong还高效的无锁实现

    我们知道,AtomicLong的实现方式是内部有个value 变量,当多线程并发自增,自减时,均通过CAS 指令从机器指令级别操作保证并发的原子性. // setup to use Unsafe.co ...

  10. webservice学习教程(三)--

    快速入门 首先,我们来尝试一下调用别人写好的webService 来体验一把:我们访问http://www.webxml.com.cn/zh_cn/index.aspx 进入到里边 当我们输入一个号码 ...