使用的笨办法,欢迎交流
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(); } } } }