自测可以通过,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 中也调试了,结果也有,和测试用例的一样

保存调试是这个结果


有好几题是这样了,求解

#LINE##笔试题目#
全部评论
楼主是你没处理多个case,你看看下面的提示,点击一下多个case
1 回复
分享
发布于 2020-02-02 17:20
@管理员 这个bug 需要修复呀
点赞 回复
分享
发布于 2020-02-02 16:45
联易融
校招火热招聘中
官网直投
顶,好几题这样了,难道不支持java
点赞 回复
分享
发布于 2020-02-02 16:45
import java.util.*; public class Main {          public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         Map<Character, Integer> countMap = new LinkedHashMap<>();         String inputStr = scanner.nextLine();         char[] charArr = inputStr.toCharArray();         for (char c : charArr) {             Integer count = countMap.get(c);             if (count == null) {                 count = 0;             }             count++;             countMap.put(c, count);         }         List<Integer> integerList = new ArrayList<>(countMap.values());         int min = integerList.get(0);         for (int i = 1; i < integerList.size(); i++) {             int num = integerList.get(i);             if (num < min) {                 min = num;             }         }         List<Character> resultChars = new ArrayList<>();         Set<Map.Entry<Character, Integer>> entrySet = countMap.entrySet();         for (Map.Entry<Character, Integer> entry : entrySet) {             Character key = entry.getKey();             Integer value = entry.getValue();             if (min != value.intValue()) {                 resultChars.add(key);             }         }         StringBuilder stringBuilder = new StringBuilder();         for (char c : charArr) {             if (resultChars.contains(c)) {                 stringBuilder.append(c);             }         }         System.out.println(stringBuilder);     } } 还有这题  题目描述 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。 
点赞 回复
分享
发布于 2020-02-02 16:52
题目描述 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。 import java.util.Scanner; import java.util.regex.Pattern; public class Main {          public static void main(String[] args) {         int x = 0;         int y = 0;         Scanner scanner = new Scanner(System.in);         String inputStr = scanner.nextLine();         Pattern pattern = Pattern.compile("[WASD]\\d{1,2}");         String[] inputArr = inputStr.split(";");         for (String controlStr : inputArr) {             if (pattern.matcher(controlStr).matches()) {                 String constr = controlStr.substring(0,1);                 int num = Integer.valueOf(controlStr.substring(1));                 if ("A".equals(constr)) {                     x -= num;                 } else if ("D".equals(constr)) {                     x += num;                 } else if ("W".equals(constr)) {                     y += num;                 } else if ("S".equals(constr)) {                     y -= num;                 } else {                 }             }         }         System.out.print(x + "," + y);     } }
点赞 回复
分享
发布于 2020-02-02 16:53
以上几题自测都存在相同问题, 没人修复 bug 么
点赞 回复
分享
发布于 2020-02-02 16:54
自测通过,然后提交通过率0?
点赞 回复
分享
发布于 2020-02-02 17:19

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务