20165227 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
20165227 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
一、实验报告封面
课程:Java程序设计 班级:1652班 姓名:朱越 学号:20165227
指导教师:娄嘉鹏 实验日期:2018年4月2日
实验时间:13:45 - 15:25 实验序号:实验一
实验名称:Java开发环境的熟悉
实验题目:实现凯撒密码并进行安全加固,并进行测试(正常情况,异常情况,边界情况)
实验内容:
1.使用JDK编译、运行简单的Java程序;
2.使用IDEA 编辑、编译、运行、调试Java程序。实验要求:
1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程;
2.完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等);
3.实验报告中统计自己的PSP(Personal Software Process)时间;
4.严禁抄袭。实验知识点:
- JVM、JRE、JDK的安装位置与区别;
- 命令行运行javac;java;javac -cp; java -cp;
- PATH,CLASSPATH,SOURCEPATH的设定方法与应用;
- 包管理:package;import;javac -d ;
- Eclipse(Netbeans)管理Java项目,调试:断点、单步执行等;
- Java基础语法:类型与类型转换;变量;运算符;流程控制等;
- JDK帮助文档的使用。
二、实验步骤
(一)命令行下Java程序开发
1、打开Linux虚拟机中的终端进行如下操作

2、通过
vim Hello.java来编辑代码,并用javac -d . Hello.java来编译代码,最后用java zy.Hello运行带包代码

(二)IDEA下Java程序开发、调试
打开IDEA新建Java项目

运行代码用
Alt+Shift+F10快捷键

- 设置断点,直接在代码左侧单击右键

运行断点用
Alt+Shift+F9快捷键;继续向下单步执行可使用Step IntoF7和Step OverF8

或者直接
F9快捷键运行完毕

条件断点:
在断点出单击右键出现设置

从上一个断点通过快捷键
F9执行至条件断点

(三)练习
- 要求:实现凯撒密码并进行安全加固,并进行测试(正常情况,异常情况,边界情况)
- 凯撒密码:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。位数就是凯撒密码加密和解密的密钥。
1、代码
- 测试代码
import java.io.*;
import java.util.Scanner;
public class K {
public static void main(String[] args) {
Caeser person = new Caeser();
System.out.println("========================================");
System.out.println("==========加密输入1,解密输入2==========");
System.out.println("========================================");
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.print("密文是:" + serct);
}
catch (E 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 (E e){
System.out.println(e.warnMess());
}
}
}
}
- 密码算法
public class Caeser {
String encrypt(String sourceString, int password) throws E{
char[] c = sourceString.toCharArray();
int m = c.length;
for (int i = 0; i < m; i++) {
if(c[i]>122||c[i]<65||(c[i]>90&&c[i]<97)){
throw new E(sourceString);
}
int mima = (c[i] - 'a' + password) % 26 + 'a';
c[i] = (char) mima;
}
return new String(c);
}
String decrypt(String sourceString, int password) throws E{
char[] c = sourceString.toCharArray();
int m = c.length;
for (int i = 0; i < m; i++) {
if(c[i]>122||c[i]<65||(c[i]>90&&c[i]<97)){
throw new E(sourceString);
}
int n = c[i] - 'a' - password;
if (n <= 0) {
n = n + 26;
}
int mima = n % 26 + 'a';
c[i] = (char) mima;
}
return new String(c);
}
}
- 异常代码
public class E extends Exception{
String message;
public E(String sourceString){
message = "输入错误!";
}
public String warnMess(){
return message;
}
}
测试
- 正常情况

- 异常情况

- 边界情况

3、IDEA测试
正常情况

异常情况

- 边界情况

三、实验过程中遇到的问题
- 会出现密文出现乱码的问题,已解决
四、实验体会与总结
- 在做前两个实验的过程中让我对代码的理解和对IDEA调试方面的理解都加深了,弥补了之前对与断点调试的理解运用不恰的问题
- 对于第三个练习实验,凯撒密码算法的编写让我思考了很久,在这里我又发现了自己对于Java代码和C语言功底的不足,通过资料查找和时间才算是完成了这个实验,也算是触及了密码算法实现的一角,加深了对其的理解
| 步骤 | 耗时 | 百分比 |
|---|---|---|
| 需求分析 | 7min | 5% |
| 设计 | 10min | 7% |
| 代码实现 | 100min | 73% |
| 测试 | 5min | 4% |
| 分析总结 | 15min | 11% |
参考资料
1.《Eclipse精粹(Eclipse Distilled)》
20165227 《Java程序设计》实验一(Java开发环境的熟悉)实验报告的更多相关文章
- 20145308刘昊阳 《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20145308刘昊阳 <Java程序设计>实验一报告 实验名称 Java开发环境的熟悉 实验内容 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试J ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验一 Java开发环境的熟悉 实验报告 一.实验要求 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA ...
- 20165327《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20165327<Java程序设计>实验二 <Java面向对象程序设计>实验报告 实验二 <Java面向对象程序设计> 一.实验报告封面 课程:Java程序设计 班 ...
- 20165205 实验一 java开发环境的熟悉 实验报告
20165205 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:刘喆君 学号:20165205 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验 ...
- 实验一《开发环境的熟悉》&实验二《固件设计》
20145312&20145338 实验一<开发环境的熟悉>&实验二<固件设计> 合作博客链接:http://www.cnblogs.com/yx2014531 ...
- 20162327实验一Java开发环境的熟悉实验报告
20162327 <程序设计与数据结构>第一次实验报告 基础知识 1.JDB的使用 使用JDB调试程序需要以下五个步骤: 1.设置断点 stop in 2.run 3.print 4.ne ...
- 20145233韩昊辰 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)
20145233 <Java程序设计>实验报告一:Java开发环境的熟悉 实验要求 使用JDK编译.运行简单的Java程序: 使用IDEA 编辑.编译.运行.调试Java程序. 实验内容 ...
- 20175236 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:温丰帆 学号:20175236 指导教师:娄嘉鹏 实验日期:2019年4月2日 实验时间:13:45 - 15:25 实验序号:实验一 ...
- 20165234 《Java程序设计》实验一 Java开发环境的熟悉
一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:刘津甫 学号:20165234 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:15:35 - 17:15 实验序 ...
随机推荐
- 第215天:Angular---指令
指令(Directive) AngularJS 有一套完整的.可扩展的.用来帮助 Web 应用开发的指令集 在 DOM 编译期间,和 HTML 关联着的指令会被检测到,并且被执行 在 AngularJ ...
- Homework 1_SQL Server中由于外键约束而删除数据失败
SQL Server中由于外键约束而删除数据失败 原因分析:外键约束问题.在配置文件中配置了一对一的关系,外键也是唯一的.数据库中数据有严格的依赖关系. 而在业务逻辑中,在往数据库里删除数据之前,却忘 ...
- Multi-class Classification相关
标签(空格分隔): 毕业论文 (OS: 最近在做关于多类分类的综述,但是搜索出来好多方向搞得自己云里雾里的,好吧,又是在下孤陋寡闻了.还是那句话,不知道不可怕,但一直不知道就很尴尬了.) one-cl ...
- Extend to Palindrome UVA - 11475(补成回文串)
题意: 就是用最少的字符把原字符串补成回文串 解析: emm/.../网上都是用kmp和后缀数组做的 我没想到这俩的思路...emmm... 想到了exkmp的 就是原串和逆串匹配一下 注意要保证 ...
- A New Function LightOJ - 1098()
题意 求 1 - n的的所有数的因子(不包括自身和1)和 对于一个数 i ,以i为因子的数的个数为 n/i 因为不能包括自身 所以 减一 即 n/i-1 这样遍历每一个数 累加即可 但复杂度较 ...
- libuv 简单使用
libuv 简单使用 来源:https://zhuanlan.zhihu.com/p/50497450 前序:说说为啥要研究libuv,其实在很久之前(大概2年前吧)玩nodejs的时候就对这个核心库 ...
- 【BZOJ2989】数列(CDQ分治,扫描线)
[BZOJ2989]数列(CDQ分治) 题面 BZOJ 权.....权限题.. 题解 Description 给定一个长度为n的正整数数列a[i]. 定义2个位置的graze值为两者位置差与数值差的和 ...
- BZOJ1150:[APIO/CTSC2007]数据备份——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1150 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的 ...
- BZOJ 4898 [APIO2017] 商旅 | SPFA判负环 分数规划
BZOJ 4898 [APIO2017] 商旅 | SPFA判负环 分数规划 更清真的题面链接:https://files.cnblogs.com/files/winmt/merchant%28zh_ ...
- POJ 2155 Matrix (矩形)
date:公元2017年7月19日适逢周三: location:清北集训 杭州 point:二维树状数组/二维差分 Matrix Time Limit: 3000MS Memory Limit: ...