题目信息
1、对输入的字符串进行加解密,并输出。
2加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
3、解密方法为加密的逆过程。
接口描述:
实现接口,每个接口实现1个基本操作:
void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出
说明:
1、字符串以\0结尾。
2、字符串最长100个字符。
int unEncrypt (char result[], char password[]):在该函数中实现字符串解密并输出
说明:
1、字符串以\0结尾。
2、字符串最长100个字符。
代码
import java.util.*; import java.util.regex.Pattern; public class Main { public void Encrypt(char[] originArr, char[] password) { StringBuilder stringBuilder = new StringBuilder(); for (char c : originArr) { if (upperCasePattern.matcher(String.valueOf(c)).matches()) { if (c == 'Z') { stringBuilder.append("a"); } else { char convert = (char) (Integer.valueOf(c) + 33); stringBuilder.append(convert); } } else if (lowerCasePattern.matcher(String.valueOf(c)).matches()) { if (c == 'z') { stringBuilder.append("A"); } else { char convert = (char) (Integer.valueOf(c) - 31); stringBuilder.append(convert); } } else if (numpattern.matcher(String.valueOf(c)).matches()) { if (c == '9') { stringBuilder.append("0"); } else { int convert = Integer.valueOf(String.valueOf(c)) + 1; stringBuilder.append(convert); } } else { stringBuilder.append(c); } } System.out.println(stringBuilder.toString()); } public int unEncrypt (char[] encryptArr, char[] password) { StringBuilder stringBuilder = new StringBuilder(); for (char c : encryptArr) { if (upperCasePattern.matcher(String.valueOf(c)).matches()) { if (c == 'A') { stringBuilder.append("z"); } else { char convert = (char) (Integer.valueOf(c) + 31); stringBuilder.append(convert); } } else if (lowerCasePattern.matcher(String.valueOf(c)).matches()) { if (c == 'a') { stringBuilder.append("Z"); } else { char convert = (char) (Integer.valueOf(c) - 33); stringBuilder.append(convert); } } else if (numpattern.matcher(String.valueOf(c)).matches()) { if (c == '0') { stringBuilder.append("9"); } else { int convert = Integer.valueOf(String.valueOf(c)) - 1; stringBuilder.append(convert); } } else { stringBuilder.append(c); } } System.out.println(stringBuilder.toString()); return 0; } public static final Pattern numpattern = Pattern.compile("\\d+"); public static final Pattern upperCasePattern = Pattern.compile("[A-Z]"); public static final Pattern lowerCasePattern = Pattern.compile("[a-z]"); /** * 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a; * 当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0; * @param args */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String originStr = scanner.nextLine(); String encryptStr = scanner.nextLine(); Main main = new Main(); char[] originArr = originStr.toCharArray(); char[] encryptArr = encryptStr.toCharArray(); char[] password = new char[originArr.length]; main.Encrypt(originArr, password); main.unEncrypt(encryptArr, password); } }
idea 中也调试了,结果也有,和测试用例的一样
保存调试是这个结果
有好几题是这样了,求解
全部评论
(7) 回帖