题目描述 “为了方便记忆,他通过一种算法把这个密码变换成” 错了吧,明明是用算法把明文变换成密码🙄
解题思路:通过多个分支判断语句将字符对应转换,大小写转换不用查ASCII码表,通过字符的加减就能实现。
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNextLine()){ String cleartext = in.nextLine(); //读取明文 StringBuilder builder = new StringBuilder(); for(int i=0; i < cleartext.length(); i++){ //小写字母转换为数字 if(cleartext.charAt(i)>='a' && cleartext.charAt(i)<='c') builder.append('2'); else if(cleartext.charAt(i)>='d' && cleartext.charAt(i)<='f') builder.append('3'); else if(cleartext.charAt(i)>='g' && cleartext.charAt(i)<='i') builder.append('4'); else if(cleartext.charAt(i)>='j' && cleartext.charAt(i)<='l') builder.append('5'); else if(cleartext.charAt(i)>='m' && cleartext.charAt(i)<='o') builder.append('6'); else if(cleartext.charAt(i)>='p' && cleartext.charAt(i)<='s') builder.append('7'); else if(cleartext.charAt(i)>='t' && cleartext.charAt(i)<='v') builder.append('8'); else if(cleartext.charAt(i)>='w' && cleartext.charAt(i)<='z') builder.append('9'); //大写字母'A'~'Y'转换 else if(cleartext.charAt(i)>='A' && cleartext.charAt(i)<='Y') builder.append((char)(cleartext.charAt(i)+'a'-'A'+1)); //大写字母'Z'单独处理 else if(cleartext.charAt(i) == 'Z') builder.append('a'); //其他字符不做变换 else builder.append(cleartext.charAt(i)); } System.out.println(builder.toString()); } } }