实验要求:

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

2.使用Eclipse 编辑、编译、运行、调试Java程序

实验内容

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

(二)Eclipse下Java程序开发、调试

(三)练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序)

1、实现凯撒密码,并进行测试。

(一):

  1. 首先双击桌面上的Xface终端图标,如下图所示:

  2. 打开终端(类似Windows下的cmd),之后会自动运行shell程序,如下图所示:

  3. 输入cd Code命令进入Code(注意C要大写)目录,如下图所示:

  4. 输入mkdir 20135100 命令建立实验目录,注意目录名一定是自己的学号(学号要体现在实验报告截图中),可以使用ls命令或dir命令查看建立的目录情况。如下图所示:

  5. 输入cd 20135100命令进入实验目录,再输入类似mkdir exp1建立第一个实验目录,然后输入cd exp1进入实验一目录,可以输入pwd命令查看当前工作路径,如下图所示:

  6. 输入gedit Hello.java注意把代码保存到exp1目录中)或vim Hello.java(建议大家花点时间学习一下Vim)编辑Hello.java,并输入以下代码:

    1 package ljp;
    2 import java.util.Scanner;
    3 public class Hello{
    4 public static void main(String[] args){
    5 System.out.println("Input your first name, please:");
    6 Scanner s = new Scanner(System.in);
    7 String name = s.next();
    8 System.out.println("Hello " + name + " !");
    9 }
    10 }

注意代码的第一行,这会影响到我们使用javac编译代码的方式。
注意代码第二行,我们使用到Java类库中的类时,要用import导入相关的类(你可以暂时理解为C语言中include的功能),导入路径可以查看JDK帮助文档,比如我们使用到了Scanner类,路径见下图中红框。
7.输入javac -d . Hello.java命令编译代码,输入java ljp.Hello命令运行
程序。结果如下图所示:

注意:代码中有package时,使用javac编译代码时一定要加-d参数,运行代码时一定要加包名前缀

(二):

1、在Eclipse中单击File->New->Class新建Java类,如下图所示:

2、根据Java代码规范输入包名ljp(小写,可以自定义),类名HelloJDB(单词首字母大写),并勾选上自动产生main函数选项,最后单击Finish按钮,如下图所示:

3、输入如下代码:```

    1. 1 package ljp;
      2 public class HelloJDB {
      3 public static void main(String[] args) {
      4 int i = 5;
      5 int j = 6;
      6 int sum = add(i, j);
      7 System.out.println(sum);
      8
      9 sum = 0;
      10 for(i=0; i< 100; i++)
      11 sum += i;
      12
      13 System.out.println(sum);
      14 }
      15
      16 public static int add(int augend, int addend){
      17 int sum = augend + addend;
      18 return sum;
      19 }
      20}

4、单击运行按钮(或使用Ctrl+F11快捷键),就可以在控制台(Console)中看到运行结果。如下图所示:

5、下面我们练习调试程序,首先我们通过单击Window->Open Perspective->Debug打开调试视图,如下图所示:

6、调试程序首先要会设置断点单步运行

设置断点比较简单,双击左侧即可。

调试:然后单击调试按钮(或使用F11快捷键)开始调试Java程序,我们可以看到程序停留在了第4行,如下图所示:

注意,此时第4行代码并没有执行,我们可以把鼠标放到变量名上来查看变量的值,此时i的值并不是5,我们通过单步运行让程序运行到第5行,单步运行有两种:Step Into(快捷捷F5)Step Over(快捷捷F5),这两种单步运行功能在运行语句时没有区别,在执行函数调用语句时,Step Into会跳入函数实现,Step Over会直接执行完函数,实际使用中我们优先使用Step Over,只有函数执行出错了,说明程序问题在被调用函数中,这时再回来通过Step Into进入函数进行调试。我们单击一下Step Over图标(或F6),程序停在了第5行,这时查看变量i的值,会看到i等于5。

7、单步执行效率比较慢,如果我们感觉到第6行到第10行的代码没有问题了,想让程序直接运行到第11行,怎么办?首先我们要在第11行设置断点,然后单击Resume图标(快捷键F8),程序就运行到了第11行。

(三):实现凯撒密码,并进行测试。

代码:

package ljp;
import java.util.Scanner;

public class kaisa
{
void mj()

{

Scanner in = new Scanner(System.in);

System.out.print("请选择操作(1.加密 2.解密):");

int n=in.nextInt();

if(n == 1)

{

System.out.print("请输入待加密的字符串:");

String str = in.next();

String jm="";

int key = 3;//凯撒密码加密,向后移位3位

for(int i = 0;i < str.length();i++)

{

char c = str.charAt(i);

if(c >= 'a'&&c <= 'z')

{

if(c>='x'&&c<='z')

{

c-=26;

c+=key;

}

else

{

c+=key;

}

}

else if(c >= 'A'&&c <= 'Z')

{

if(c>='X'&&c<='Z')

{

c-=26;

c+=key;

}

else

{

c+=key;

}

}

jm += c;

}

System.out.print("加密后的字符串是:"+jm);

System.out.print("\n输入任意建继续,0结束程序:");

n=in.nextInt();

if(n==0)

{

System.out.print(" 谢谢使用本程序,欢迎再次使用!");

}

else

{

this.mj();

}

}

else if(n == 2)

{

System.out.print("请输入待解密的字符串:");

String str = in.next();

String jm="";

int key = -3;//凯撒密码解密,向前移位3位

for(int i = 0;i < str.length();i++)

{

char c = str.charAt(i);

if(c >= 'a'&&c <= 'z')

{

if(c>='a'&&c<='c')

{

c+=26;

c+=key;

}

else

{

c+=key;

}

}

else if(c >= 'A'&&c <= 'Z')

{

if(c>='A'&&c<='C')

{

c+=26;

c+=key;

}

else

{

c+=key;

}

}

jm += c;

}

System.out.println("解密后的字符串:"+jm);

System.out.print("\n输入任意建继续,0结束程序:");

n=in.nextInt();

if(n==0)

{

System.out.print(" 谢谢使用本程序,欢迎再次使用!");

}

else

{

this.mj();

}

}

else

{

System.out.print("请输入1或2,其他字符无效!\n输入任意建继续,0结束程序:");

n=in.nextInt();

if(n==0)

{

System.out.print(" 谢谢使用本程序,欢迎再次使用!");

}

else

{

this.mj();

}

}

}

public static void main(String[] args)

{

kaisa mj=new kaisa();

System.out.println("******欢迎使用凯撒密码******");

mj.mj();

}

}

运行结果:

实验中遇到的问题和解决办法。


在实验二的操作过程中,在设置断点时,没有看懂老师的操作截图。所以自己上网百度以后发现,只需要简单的在所需断点的行的最左边双击就可以设置断点。

实验三的编译过程中,遇到较多问题。

首先,忘记了凯撒密码的原理。上网进行百度后才明白:它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。

其次,第一次独立编写代码,发现需要的知识储备不够多。在一边进行翻书,一边上网查找功能方法下,最终才编译成功。

实验收获

通过本次实验,我学会了再命令行中进行java文件的编写,学会了在eclipse中调试程序,最重要的是,在进行实验和解决问题的过程中,对编程有了更深一步的理解。在第三个实验编写的过程中,将看视频学习的内容,进行了应用,通过子父类的方式实现了一下,将不同的功能进行分装处理。还是真正动手操作才能学到知识。

Java实验报告一:Java开发环境的熟悉的更多相关文章

  1. java实验报告三 敏捷开发与XP

    20145306 java 实验三 实验报告 实验内容 1.git下载结对同学的代码 2.修改结对同学的代码 3.实现代码重构 实验步骤 新建存储空间 git下载代码 将修改后的代码上传 上传结果 重 ...

  2. 20145212《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDE)

    20145212<Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDE) 实验内容及步骤 1.命令行下的JAVA程序开发 建立并进入实验目录: 撰写简单的Hello ...

  3. 20145213《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)

    20145213<Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDEA) 实验要求 使用JDK编译.运行简单的Java程序. 使用IDEA编辑.编译.运行.调试J ...

  4. 20145206邹京儒《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)

    20145206<Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDEA) 实验内容及步骤 1.使用JDK编译.运行简单的Java程序: 建立实验目录: 在IDEA ...

  5. 20145308刘昊阳 《Java程序设计》实验一 Java开发环境的熟悉 实验报告

    20145308刘昊阳 <Java程序设计>实验一报告 实验名称 Java开发环境的熟悉 实验内容 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试J ...

  6. 20145233韩昊辰 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)

    20145233 <Java程序设计>实验报告一:Java开发环境的熟悉 实验要求 使用JDK编译.运行简单的Java程序: 使用IDEA 编辑.编译.运行.调试Java程序. 实验内容 ...

  7. 20155304 实验一《Java开发环境的熟悉》实验报告

    20155304 实验一实验报告 实验一 Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA编译.编译.运行.调试Java程序. 实验步骤 (一)命令行下 ...

  8. 20162308 实验一《Java开发环境的熟悉》实验报告

    a 20162308 实验一<Java开发环境的熟悉>实验报告 实验内容 使用JDK编译.运行简单的Java程序. 使用IDEA 编辑.编译.运行.调试Java程序. 实验要求 没有Lin ...

  9. 20162330 实验一 《Java开发环境的熟悉》 实验报告

    2016-2017-2 实验报告目录: 1 2 3 4 5 20162330 实验一 <Java开发环境的熟悉> 实验报告 课程名称:<程序设计与数据结构> 学生班级:1623 ...

  10. 2018-2019-2 20175306实验二面向对象程序设计《Java开发环境的熟悉》实验报告

    2018-2019-2 20175306实验二面向对象程序设计<Java开发环境的熟悉>实验报告 面向对象程序设计-1 实验要求: 参考:> http://www.cnblogs.c ...

随机推荐

  1. C#中类为什么要实例化

    在使用C#语言时,发现一下有关类实例化的问题,在此之前先复习一下类和对象的概念,类是一个抽象体,是对一类事物的抽象体:而对象就是一个具体的事物,对象的抽象就是类.车就是一个类,而车包括面包车,小汽车, ...

  2. [BUG]Appium1.9.1 这个问题竟然花了我5分钟进行定位

    1.先上问题,知道是什么问题先 EE ====================================================================== ERROR: tes ...

  3. 用navicat手动删除了数据表的记录,再次写入的时候,怎么让id重新从1开始?

    问:用navicat手动删除了mariadb数据表的记录,再次写入的时候,自增id会继续,不会从1开始. 比如,原来有10条记录,全部清空,再次写入数据,id会从11开始,怎么让他重新从1开始呢? 重 ...

  4. redis面试必问

    1.项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果? 面试题剖析 为什么要用缓存? 用缓存,主要有两个用途:高性能.高并发. 高性能 假设这么个场景,你有个操作,一个请求过来,吭哧 ...

  5. python流程控制语句-if语句

    一个if语句 if语句用来检验一个条件, 如果 条件为真,我们运行一块语句(称为 if-块 ),也就是只有一个if判断,当为真的时候就运行一块语句,否则就不运行 下面代码中的if语句控制者缩进的pri ...

  6. 【转】BASE64编码简介

    BASE64是一种编码方式,通常用于把二进制数据编码为可写的字符形式的数据. 这是一种可逆的编码方式. 编码后的数据是一个字符串,其中包含的字符为:A-Z.a-z.0-9.+./ 共64个字符:26 ...

  7. ethereum/EIPs-1193 Ethereum Provider JavaScript API 如metamask更新后的接口

    eip title author discussions-to status type category created requires 1193 Ethereum Provider JavaScr ...

  8. day22 Pythonpython 本文sys模块

    一.sys模块 用来提供对Python解释器相关的操作 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.versio ...

  9. mysql试题

    drop,delete与truncate的区别:优先级: drop > truncate > deleteTRUNCATE 按行删除并不把删除操作记录记入日志保存(不可恢复)DELETE ...

  10. Runloop深入理解

    一.什么是Runloop?为什么需要Runloop? Runloop,顾名思义,即运行循环. 没有Runloop的情况下,一个线程执行完一个任务,就会退出并销毁.等到需要处理下一个任务时,再重新创建一 ...