一、实验内容及步骤

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

    • cd code进入code文件夹
    • mkdir 20175313创建20175313文件夹
    • ls查看当前目录
    • cd 20175313,mkdir exp1,cd exp1,用pwd查看当前工作路径
    • vim Hello.java编辑Hello.java
    • javac -d . Hello.java编译代码
    • java zlx.Hello运行代码

实验截图如下:



  1. 使用IDEA调试Java程序

    • 设置断点
    • 单步运行
      • step into(快捷键F5)
      • step over(快捷键F6)
    • 两个断点之间的跳跃Resume(快捷键F8)
    • 设置条件断点

实验截图如下:

二、练习

题目5:实现求正整数1-N之间所有质数的功能,并进行测试(正常情况,异常情况,边界情况)。

代码为:

import java.util.*;
public class primeNumber2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int flag=0;
System.out.println("请输入一个数:");
int number = scanner.nextInt();
//while(scanner.hasNextInt()){
System.out.println(number);
if(number<0){
System.out.println("负数没有素数与合数之分");
}
else if(number==1||number==0){
System.out.println(number+"既不是素数也不是合数");
}
else {
for(int j=2;j<number;j++){
flag=0;
for (int i = 2; i < j; i++) {
if (j % i == 0) {
flag = 1;
break;
}
}
if(flag==0){
System.out.println(number+"是素数");
}
}
}
}
}

运行结果截图:

三、实验过程的理解

  • javac -d . Hello.java-d参数的作用

    • 是指定生成java包的根目录,-d . 是在当前目录上编译生成java包。
    • 如果省略了-d,则仅仅是在当前目录生成的class文件。
  • JVM、JRE、JDK的安装位置与区别:
    • JVM:只认识*.class文件,能够将class文件中的字节码指令进行识别并调用操作 系统上的API完成动作。
    • JRE:JRE = JVM+Java类库
    • JDK:JDK = JRE+小工具

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

  1. 带有package的编译运行问题及解决方案

    • 问题:在编辑*.java源文件中含有包名为zlx时,我首先在当前目录建立了一个名为zlx的文件夹,然后进入该文件夹,进行vim Hello.javajavac -d . Hello.javajava zlx.Hello,我cd一下发现,在zlx文件夹下又建了一个文件夹名为zlx。

    • 解决方案:通过各种途径了解到javac -d . Hello.java 中-d参数表达的意义,从而明白的出现该现象的原因。

    • 分析:javac -d . Hello.java -d参数的作用是指定生成java包的根目录,该程序中有zlx这个包,-d后会在当前目录下生成zlx这个包,因此,不需要我们自己去创建zlx这个文件夹然后再将源文件写入zlx目录下。
    • 启示:这使我联想到了教材中tom.jiafei的那个例子,它是在源程序中定义了package tom.jiafei这个包名,我当初的解决方法

      https://www.cnblogs.com/xiannvyeye/p/10544611.html)

      了解的-d的用法之后,我的解决方法是:

  2. 程序运行结果与预期不符问题及解决方案

    • 问题:运行结果本应该输出1-100的所有素数,但是却什么也没有输出。

    • 解决方案:通过IDEA调试查看问题出现在哪里。

    • 更改后运行结果截图:

五、实验体会与总结

  • 一个程序是由很多模块构成的,也就是所谓的类,虽然我这个实验比较简单不需要多个类,但是很多内容是共通的,比如一个带包源文件的编译,在我们解决了一个问题之后,相应的一类的问题就都解决了。例如:编译带包源文件Hello.java就联想到了tom.jiafei那个例子的编译。

  • 当程序运行结果与自己意料中的不一样时,可以使用调试工具,IDEA可以很清楚的查看到每一步每一个变量的变化。

  • 像这类的实验我觉得如果能够通过结对来完成,应该能够达到较好的效果。就像我的System.out.println()放错了位置,如果是结对一起写的话,这个问题应该在当场就会被发现,这样就能节省调试的时间,提高效率。而且两个人结对还能够提高代码的质量,设计出一个更好的实现该功能的程序。

    步骤 耗时 百分比
    需求分析 10min 10%
    设计 10min 10%
    代码实现 45min 45%
    测试 25min 25%
    分析总结 10min 10%

2018-2019-2 20175313 实验一《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. select 与 time.After 配合使用的问题

    今天在工作中发现了一个有趣的现象. 在一个select中设定了两个定时器,本来预计哪个定时器到达就运行相应指令的,但是发现最终只有时间最短的定时器一直得到执行,其它定时器完全没有得到执行. packa ...

  2. Docker入门简记

    Docker的容器环境实际上是借助类Linux命名空间,将各种系统资源按照容器不同划分了不同的命名空间进行隔离,为各个进程提供独立的运行环境关键概念:容器,镜像两个概念一起看,镜像好比平常系统中的各个 ...

  3. 【ML入门系列】(三)监督学习和无监督学习

    概述 在机器学习领域,主要有三类不同的学习方法: 监督学习(Supervised learning) 非监督学习(Unsupervised learning) 半监督学习(Semi-supervise ...

  4. 使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务

    在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端.我们可以使用JDK原生的URLConnection.Ap ...

  5. Ubuntu系统监控indicator-sysmonitor

    参考: http://www.cnblogs.com/EasonJim/p/7130171.html 安装indicator-sysmonitor sudo add-apt-repository pp ...

  6. HAWQ配置之HDFS HA

    一.在ambari管理界面启用HDFS HA 在ambari中这步很简单,在所有安装的服务都正常之后,在HDFS的服务界面中,点击下拉菜单“Actions”,选择启用HDFS HA项 “Enable ...

  7. 使用redis原生list结构作为消息队列取代celery框架。

    1.web后台对大批量的繁重的io任务需要解耦使用分布式异步技术,否则会使接口阻塞,并发延迟,一般就选celery好了.此篇的取代主要是针对取代celery的worker模式.没有涉及到周期和定时模式 ...

  8. [todo] 3rd

    十个 Laravel 5 程序优化技巧

  9. flex布局应用与踩坑

    一.预告 本文不是一篇入门的文章所有请符合以下条件的战斗人员绕道: 1.初学前端,对前端的传统布局还不是很熟悉的人 2.后端人员对前端不打算深入学习的同学 二.开篇 flex布局原本是好几个月前就一直 ...

  10. windows 驱动开发 MDL 内核层 用户层共享内存

    参考资料 https://blog.csdn.net/wdykanq/article/details/7752909 http://blog.51cto.com/laokaddk/404584 内核层 ...