题目描述
1、对输入的字符串进行加解密,并输出。
2加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
3、解密方法为加密的逆过程。
直接上代码
/**
*
* @param string
* 要处理的字符串
*/
public static void encryptAndunEncrypt(String string) {
String[] strs = string.split(" ");
String strEncrypt = strs[0];
String strunEncrypt = strs[1];
StringBuilder sbEn = new StringBuilder();
StringBuilder sbunEn = new StringBuilder();
for (int i = 0; i < strEncrypt.length(); i++) {
if (Character.isLetter(strEncrypt.charAt(i))) {
if (Character.isLowerCase(strEncrypt.charAt(i))) {
if (strEncrypt.charAt(i) >= 'a' && strEncrypt.charAt(i) < 'z') {
sbEn.append((char) Character.toUpperCase(strEncrypt.charAt(i) + 1));
} else {
sbEn.append((char) 'A');
}
} else {
if (strEncrypt.charAt(i) >= 'A' && strEncrypt.charAt(i) < 'Z') {
sbEn.append((char) Character.toLowerCase(strEncrypt.charAt(i) + 1));
} else {
sbEn.append((char) 'a');
}
}
} else if (Character.isDigit(strEncrypt.charAt(i))) {
if (strEncrypt.charAt(i) < '9') {
sbEn.append((char) (strEncrypt.charAt(i) + 1));
} else {
sbEn.append((char) '0');
}
} else {
sbEn.append((char) strEncrypt.charAt(i));
}
}
// 解秘
for (int i = 0; i < strunEncrypt.length(); i++) {
if (Character.isLetter(strunEncrypt.charAt(i))) {
if (Character.isLowerCase(strunEncrypt.charAt(i))) {
if (strunEncrypt.charAt(i) > 'a' && strunEncrypt.charAt(i) <= 'z') {
sbunEn.append((char) Character.toUpperCase(strunEncrypt.charAt(i) - 1));
} else {
sbunEn.append((char) 'Z');
}
} else {
if (strunEncrypt.charAt(i) > 'A' && strunEncrypt.charAt(i) <= 'Z') {
sbunEn.append((char) Character.toLowerCase(strunEncrypt.charAt(i) - 1));
} else {
sbunEn.append((char) 'z');
}
}
} else if (Character.isDigit(strunEncrypt.charAt(i))) {
if (strunEncrypt.charAt(i) > '0') {
sbunEn.append((char) (strunEncrypt.charAt(i) - 1));
} else {
sbunEn.append((char) '9');
}
} else {
sbunEn.append((char) strunEncrypt.charAt(i));
}
}
System.out.println(sbEn.toString() + " " + sbunEn.toString());
}