知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技

20165318 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

发表时间:2022-03-24来源:网络

20165318 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

一、实验报告封面

课程:Java程序设计        班级:1653班        姓名:孙晓暄        学号:20165318

指导教师:娄嘉鹏                              实验日期:2018年4月2日

实验时间:13:45 - 3:25                    实验序号:实验一

实验名称:Java开发环境的熟悉

实验题目:实现凯撒密码并进行安全加固,并进行测试(正常情况,异常情况,边界情况)

实验内容
1.使用JDK编译、运行简单的Java程序;
2.使用IDEA 编辑、编译、运行、调试Java程序。

实验要求
1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程;
2.完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等);
3.实验报告中统计自己的PSP(Personal Software Process)时间;
4.严禁抄袭。

二、实验内容及步骤

(一)使用JDK编译、运行简单的java程序

命令行下的程序开发
步骤一(新建文件夹):打开windows下的git bash → 输入cd java命令进入java目录 → 输入mkdir 20165318test建立以自己学号命名的文件夹 → 输入cd 20165318test进入文件夹 → 输入mkdir exp1建立“实验一”文件夹 → 输入cd exp1进入“实验一”文件夹 → 输入mkdir src ,mkdir bin,建立src和bin文件夹。

步骤二(编译、运行java程序):使用git bash中的vim编辑器编辑java程序 → 在命令行下编译、运行

(二)使用IDEA编辑、编译、运行、调试Java程序

1、新建「HelloJDB」类,输入如下代码:

2、运行「HelloJDB」,单击运行按钮(或使用Alt+Shift+F10快捷键)

3、设置断点,单步运行。
在需要设置断点的一行左侧单击鼠标,出现红色圆点。比如如下在第七行设置了断点:

在上方Run菜单找到Debug...进行单步调试(或使用Alt+Shift+F9快捷键):

运行到第七行截止,结果如下:

继续向下单步执行可使用Step Into(快捷键F7)和Step Over(快捷键F8)

Step Over(F8):程序向下执行一行(如果当前行有方法调用,这个方法将被执行完毕返回,然后到下一行)

Step Into(F7):程序向下执行一行。如果该行有自定义方法,则运行进入自定义方法(不会进入官方类库的方法)

Force Step Into:进入任何方法

Step Out(Shift+F8):如果在调试的时候进入了一个方法,并觉得该方法没有问题,就可以使用stepout跳出该方法,返回到该方法被调用处的下一行语句。值得注意的是,该方法已执行完毕。

Run to Cursor:将程序运行到光标处。

可使用Resume(快捷键F9)直接运行完毕,如下图:

4、条件断点
如果想查看大循环中出现的问题,可以通过条件断点来解决。如下图所示设置条件断点,使用Resume(快捷键F9)从上一个断点直接运行到此条件断点。

(三)练习:实现凯撒密码并进行安全加固,并进行测试(正常情况,异常情况,边界情况)

要求』:通过命令行和IDEA两种方式实现,在IDEA下练习调试程序。

1、设计思路

我们知道凯撒密码是一种代换密码。他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。位数就是凯撒密码加密和解密的密钥。
我要实现使用凯撒密码在不同密钥下对明文,进行加密;或对密文进行解密。

2、代码撰写

shiyan1.java

/** * Created by SXX on 2018/3/31 */ import java.io.*; import java.util.Scanner; public class shiyan1 { public static void main(String[] args) { EncryptAndDecrypt person = new EncryptAndDecrypt(); System.out.print("请选择加密还是解密:(加密输入1,解密输入2)"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); if (n == 1) { System.out.print("请输入明文:"); Scanner scanner1 = new Scanner(System.in); String m = scanner1.nextLine(); System.out.print("请输入密钥:"); Scanner scanner2 = new Scanner(System.in); int k = scanner2.nextInt(); try { String serct = person.encrypt(m, k); System.out.println("密文是:" + serct); } catch (EadException e){ System.out.println(e.warnMess()); } } else { System.out.print("请输入密文:"); Scanner scanner1 = new Scanner(System.in); String m = scanner1.nextLine(); System.out.print("请输入密钥:"); Scanner scanner2 = new Scanner(System.in); int k = scanner2.nextInt(); try { String source = person.decrypt(m, k); System.out.print("明文是:" + source); } catch (EadException e){ System.out.println(e.warnMess()); } } } }

EncryptAndDecrypt.java //凯撒密码

public class EncryptAndDecrypt { String encrypt(String sourceString, int password) throws EadException{ //加密算法 char[] c = sourceString.toCharArray(); int m = c.length; for (int i = 0; i < m; i++) { if(c[i]>122||c[i]90&&c[i]122||c[i]90&&c[i]
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜