使用的笨办法,欢迎交流
import java.util.*;
public class Main{
public static void code(String str){
/**
* 加密过程
*/
char[] ch = str.toCharArray();
//如果是小写字母,则用其大写字母的后一个字母替换
for(int i = 0; i < str.length(); i++){
//如果是大写字母,则将其ASCII码加33
if(ch[i] >= 65 && ch[i] < 90){
ch[i] = (char)(ch[i] + 33);
//如果是'Z',将其替换为'a'
} else if(ch[i] == 90) {
ch[i] = 'a';
//如果是小写字母,将其ASCII码减31
} else if(ch[i] >= 97 && ch[i] < 122) {
ch[i] = (char)(ch[i] - 31);
//如果是'z',将其替换成'A'
} else if(ch[i] == 122){
ch[i] = 'A';
//如果是数字,将该数字加1
} else if(ch[i] >= 48 && ch[i] < 57){
ch[i] = (char)(ch[i] + 1);
//如果是9,将其替换为0
} else if(ch[i] == '9'){
ch[i] = '0';
}
}
//加密完成后遍历输出数组
for(char a : ch){
System.out.print(a);
}
}
public static void deCode(String str2){
/**
* 解密过程
*/
char[] ch2 = str2.toCharArray();
//如果是小写字母,则用其大写字母的后一个字母替换,ASCII码值加31
for(int i = 0; i < str2.length(); i++){
if(ch2[i] > 65 && ch2[i] <= 90){
ch2[i] = (char)(ch2[i] + 31);
//如果是'A',用'z'替换
} else if(ch2[i] == 65) {
ch2[i] = 'z';
//如果是小写字母,ASCII码减33
} else if(ch2[i] > 97 && ch2[i] <= 122) {
ch2[i] = (char)(ch2[i] -33);
//如果是'a',则替换成'Z'
} else if(ch2[i] == 97){
ch2[i] = 'Z';
} else if(ch2[i] > 48 && ch2[i] <= 57){
//如果是数字,减1
ch2[i] = (char)(ch2[i] - 1);
} else if(ch2[i] == 48){
//如果是0,替换成9
ch2[i] = '9';
}
}
//解码后遍历输出数组
for(char b : ch2){
System.out.print(b);
}
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
/**
num用于统计函数,从偶数行开始获取输入内容,
因为本题含有多组样例输入,奇数行为未加密字符,偶数行为已加密内容,
所有由num的奇偶性来判断输入的内容是否是加密的
*/
int num = 1;
while(sc.hasNext()){
num++;
if(num % 2 == 0){
//读取第一行输入的内容
String str = sc.nextLine();
//加密
code(str);
//加密解密操作中间换行显示
System.out.println();
//读取第二行输入的内容
String str2 = sc.nextLine();
//解码
deCode(str2);
}
//每组加密解密完成后换行
if(num % 2 == 1){
System.out.println();
}
}
}
}

京公网安备 11010502036488号