开发基于控制台的凯撒加密系统
-->凯撒加密法,就是将字母表中的每个字母向后移动2位,比如a被替换成d,b被替换成f,依次类推。字母表的最对于后三位xyz,会被替换为abc。对于拉丁字母之外的其他字符,一律不加密。
运行效果如图:
-->凯撒加密法,就是将字母表中的每个字母向后移动2位,比如a被替换成d,b被替换成f,依次类推。字母表的最对于后三位xyz,会被替换为abc。对于拉丁字母之外的其他字符,一律不加密。
//这里只考虑了小写字母的加密算法,其他情况请读者自行添加
import java.util.Scanner;
public class KaiSaJiaMi {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out
.println("***********************欢迎使用凯撒加密器***********************");
System.out.println();
System.out.print("请选择操作(1.加密、2.解密):");
int index = sc.nextInt();
if (1 == index) {// 加密
System.out.print("请输入待加密的字符串:");
String str = sc.next();
StringBuffer newStr = new StringBuffer();// 存储加密后的字符串
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
switch (c) {
case 'x':
newStr.append('a');
break;
case 'y':
newStr.append('b');
break;
case 'z':
newStr.append('c');
break;
default:
if (!(c >= 'a' && c <= 'w')) {// 其中有一些非字母,则直接输出
newStr.append(c);
continue;
}
char newChar = (char) (c + 3);// 加密算法,每个字符后移三位
newStr.append(newChar);
}
}
System.out.println("加密后的字符串是:" + newStr.toString());
} else if (2 == index) {// 解密
System.out.print("请输入待解密的字符串:");
String str = sc.next();
char[] arr = str.toCharArray();// 将待解密的字符串转换为字符数组
for (int i = 0; i < arr.length; i++) {
switch (arr[i]) {
case 'a':
arr[i] = 'x';
break;
case 'b':
arr[i] = 'y';
break;
case 'c':
arr[i] = 'z';
break;
default:
if (!(arr[i] >= 'd' && arr[i] <= 'z')) {// 其中有一些标点符号,则直接输出
continue;
}
arr[i] -= 3;
}
}
System.out.print("解密后的字符串是:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
} else {
System.out.println("sorry,请输入1或2");
}
sc.close();
}
}
运行效果如图: