首页 > 自测可以通过,IDEA结果也一样通过,这程序有Bug
头像
shootercheng
编辑于 2020-02-02 17:46
+ 关注

自测可以通过,IDEA结果也一样通过,这程序有Bug


题目信息

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) 回帖
加载中...
话题 回帖