题解
此题没什么难度,将需要加解密的字符列出来进行处理,另外需要注意边界问题。
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String plainText = sc.nextLine(); // 明文
String cipherText = sc.nextLine(); // 密文
encryptStr(plainText); // 加密
System.out.println();
decryptStr(cipherText); // 解密
}
}
// 加密字符串
public static void encryptStr(String plainText) {
for (int i = 0; i < plainText.length(); i++) {
char ch = plainText.charAt(i);
if (ch >= 'a' && ch < 'z') {
ch = (char)(ch + 1 - 32); // +1并转为大写
} else if (ch >= 'A' && ch < 'Z') {
ch = (char)(ch + 1 + 32); // +1并转为小写
} else if (ch >= '0' && ch < '9') {
ch = (char)(ch + 1); // +1
} else if (ch == 'z') {
ch = 'A'; // 小写z ==> A
} else if (ch == 'Z') {
ch = 'a'; // 大写Z ==> Z
} else if (ch == '9') {
ch = '0'; // 9 ==> 0
}
System.out.print(ch);
}
}
// 解密字符串
public static void decryptStr(String cipherText) {
for (int i = 0; i < cipherText.length(); i++) {
char ch = cipherText.charAt(i);
if (ch > 'a' && ch <= 'z') {
ch = (char)(ch - 1 - 32); // -1并转为大写
} else if (ch > 'A' && ch <= 'Z') {
ch = (char)(ch - 1 + 32); // -1并转为小写
} else if (ch > '0' && ch <= '9') {
ch = (char)(ch - 1); // -1
} else if (ch == 'a') {
ch = 'Z'; // 小写a ==> Z
} else if (ch == 'A') {
ch = 'z'; // 大写A ==> z
} else if (ch == '0') {
ch = '9'; // 0 ==> 9
}
System.out.print(ch);
}
}
}