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 实验序 ...
随机推荐
- Java多线程之ThreadLocal总结2
ThreadLocal是什么 早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简洁地 ...
- 重温SQL——行转列,列转行
行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现.用传统的方法,比较好理解.层次清 ...
- UVA11324_The Largest Clique
极大团.即求一个最大点集,使得点集中的任意两个点u,v至少存在u->v,或者v->u的路径. 是这样做的,求出所有的联通分量,然后整个图就变成了无环图,把原来若干个点缩点,点权为分量的点数 ...
- 2018 焦作icpc现场赛总结
Day 0 没有直达焦作的飞机,所以选择了先到新郑机场,再转乘城际列车.城际列车猜是专门给学生开通的吧,每天只有来和回一共两趟(所以机票选择的余地也不多).买的时候只有无座票了,本来以为会一直站着,但 ...
- 【题解】JSOI2015染色问题
好像这个容斥还是明显的.一共有三个要求,可以用组合数先满足一个,再用容斥解决剩下的两个维.(反正这题数据范围这么小,随便乱搞都可以).用 \(a[k][i]\) 表示使用 \(k\) 种颜色,至少有 ...
- H5页面遮罩弹框下层还能滚动的问题
在页面上显示一个遮罩层,这是非常常见的操作,在遮罩层上操作,下层也会默认跟随手指滚动 此处就是要在显示遮罩的时候禁止下层滚动. 首先设置一个全局变量 var canScroll=false; 页面初始 ...
- Codeforces 438D (今日gg模拟第二题) | 线段树 考察时间复杂度的计算 -_-|||
Codeforces 438D The Child and Sequence 给出一个序列,进行如下三种操作: 区间求和 区间每个数模x 单点修改 如果没有第二个操作的话,就是一棵简单的线段树.那么如 ...
- 【hdu4057】 恨7不成妻
http://acm.hdu.edu.cn/showproblem.php?pid=4507 (题目链接) 题意 求区间${[a,b]}$中的某些数的平方和,这些数要满足1.不是7的倍数,2.不含有7 ...
- 【bzoj2754】【scoi2012】喵星球上的点名
题解们: 1.首先可以被很多暴力给搞过去:我以前也是这样水过去的 2.ac自动机 2.1 抽离fail树 对点名建自动机,建$fail$树的时候只保留询问节点: 对于一个喵,子串==在自动机里匹配到的 ...
- Package ‘RSNNS’
0 引言 Stuttgart Neural Network Simulator(SNNS)是德国斯图加特大学开发的优秀神经网络仿真软件,为国外的神经网络研究者所广泛采用.斯图加特神经网络模拟器(SNN ...