20165218 实验一 Java开发环境的熟悉
实验一 Java开发环境的熟悉
课程:java程序设计
姓名:赵冰雨
学号:20165218
指导教师:娄嘉鹏
实验日期:2018.4.2
实验密级:Java开发环境的熟悉
实验内容、步骤与体会:
(一)Linux命令行下Java程序开发
- 打开虚拟机,
Ctrl+Alt+T
打开终端(也可以在需要打开终端的文件夹下直接右键打开终端) cd 20165218
,mkdir exp1
,cd exp1
,建立并进入实验一的文件夹mkdir bin
,mkdir src
touch src/Hello.java
并在IDEA内编辑保存好javac -d bin src/Hello.java
编译到bin内java -cp bin Hello
运行
(二)IDEA下Java程序开发、调试
- 创建项目,新建
HelloJDB
类,输入代码,Shift+Alt+F10
运行
-
在行前左击,设置断点,
Shift+Alt+F9
程序运行到断点处
-
单步执行
- 条件断点:在断点处输入条件,
Shift+Alt+F9
进行Debug
(三)练习(通过命令行和IDEA两种方式实现,自己的学号后两位与题目总数取余的结果再加上1就是自己要完成的题号,在IDEA下练习调试程序)
- 实现凯撒密码并进行安全加固,并进行测试(正常情况,异常情况,边界情况)。
代码实现:
凯撒密码主类
/**
* Created by zby on 2018/4/2.
*/
import java.util.*;
import java.lang.*;
public class CaeserCipher {//凯撒密码
public static void main(String[] args) {
System.out.println("输入一串字符串作为明文(回车结束):");
Scanner input = new Scanner(System.in);
String m = input.next();//读入一行字符串,以回车为标志
Arithmetic output = new Arithmetic();
String c = output.encrpty(m);
System.out.println("加密后的密文为:" + c);
System.out.println("解密后的明文为:" + output.decrypt(c));
}
}
算法方法所在类
/**
* Created by zby on 2018/4/2.
*/
import java.lang.*;
public class Arithmetic {//加密和解密算法
public String encrpty(String m) {
StringBuilder result = new StringBuilder();
char[] mi = m.toCharArray();
int n = mi.length;
for (int c : mi) {
if (c >= 'a' && c <= 'z') {
c += 3; // 移动key%26位
if (c < 'a')
c += 26; // 向左超界
if (c > 'z')
c -= 26; // 向右超界
}
// 如果字符串中的某个字符是大写字母
else if (c >= 'A' && c <= 'Z') {
c += 3; // 移动key%26位
if (c < 'A')
c += 26;// 同上
if (c > 'Z')
c -= 26;// 同上
}
result.append((char) c);
}
return result.toString();
}
public String decrypt(String m) {
StringBuilder result = new StringBuilder();
char[] mi = m.toCharArray();
int n = mi.length;
for (int c : mi) {
if (c >= 'a' && c <= 'z') {
c -= 3; // 向前移动3位
if (c < 'a')
c += 26; // 向左超界
if (c > 'z')
c -= 26; // 向右超界
}
// 如果字符串中的某个字符是大写字母
else if (c >= 'A' && c <= 'Z') {
c -= 3; // 向前移动3位
if (c < 'A')
c += 26;// 同上
if (c > 'Z')
c -= 26;// 同上
}
result.append((char) c);
}
return result.toString();
}
}
实现: