实验要求:

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中调试程序,最重要的是,在进行实验和解决问题的过程中,对编程有了更深一步的理解。在第三个实验编写的过程中,将看视频学习的内容,进行了应用,通过子父类的方式实现了一下,将不同的功能进行分装处理。还是真正动手操作才能学到知识。

 

posted on 2015-04-15 23:34  20135120  阅读(219)  评论(0编辑  收藏  举报