正常的解题思路,使用多分支判断将字符对应转换。
tips:大小写转换不用查ASCII码表,通过字符加减就能实现
有大佬说数字转换可以通过加一再除以十取余数的方式实现,这样不用单独考虑数字9,方便多了!
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ System.out.println(encode(in.nextLine())); System.out.println(decode(in.nextLine())); } } //加密函数 private static String encode(String code){ char[] t = code.toCharArray(); //将String对象转换为字符数组 for(int i=0; i < t.length; i++){ if(t[i]>='a' && t[i]<'z') t[i] = (char)(t[i] - 'a' + 'A' + 1); else if(t[i] == 'z') t[i] = 'A'; else if(t[i]>='A' && t[i]<'Z') t[i] = (char)(t[i] - 'A' + 'a' + 1); else if(t[i] == 'Z') t[i] = 'a'; else if(t[i]>='0' && t[i]<'9') t[i] = (char)(t[i]+1); else if(t[i] == '9') t[i] = '0'; } return String.valueOf(t); } //解密函数 private static String decode(String password){ char[] t = password.toCharArray(); for(int i=0; i < t.length; i++){ if(t[i]>'a' && t[i]<='z') t[i] = (char)(t[i] - 'a' + 'A' - 1); else if(t[i] == 'a') t[i] = 'Z'; else if(t[i]>'A' && t[i]<='Z') t[i] = (char)(t[i] - 'A' + 'a' - 1); else if(t[i] == 'A') t[i] = 'z'; else if(t[i]>'0' && t[i]<='9') t[i] = (char)(t[i]-1); else if(t[i] == '0') t[i] = '9'; } return String.valueOf(t); } }