定义一个名为encode的方法,该方法接受String作为输入并返回一个新的String,它是使用ROT13密码编码的原始String

时间:2015-09-25 23:37:09

标签: java encode rot13

例如:字符串“abc”应该返回“nop”。

我做了一个System.out.println,它正在打印正确的结果,但是,JUnit Test案例给了我一个红色条。方法move13只取角色并向左或向右移动13个空格。

方法编码是我遇到麻烦的地方。

package code;

public class Encoder {

    public char move13(char letter) {
        if (letter >= 'a' && letter <= 'm') {
            return (char)(letter + 13);
        }
        if (letter >= 'A' && letter <= 'M') {
            return (char)(letter + 13);
        }
        if (letter >= 'n' && letter <= 'z') {
            return (char)(letter - 13);
        }
        if (letter >= 'N' && letter <= 'Z') {
            return (char)(letter - 13);
        }
        return letter;
    }

    public String encode(String text) {
        String valueOfchar = "";
        for (int i = 0; i < text.length(); i++) {
            char character = text.charAt(i);
            character = move13(character);
            valueOfchar = String.valueOf(character);
            System.out.println(valueOfchar);

        }
        return valueOfchar;

    }
}

2 个答案:

答案 0 :(得分:0)

我们没有看到单元测试代码,但是在猜测时,您的方法encode()将只返回一个字符,而不是整个字符串。

public String encode(String text) {
    String valueOfchar = "";
    for (int i = 0; i < text.length(); i++) {
    ....
    valueOfchar = String.valueOf(character); // A single char
    ....
}
return valueOfchar;

尝试:

valueOfchar = valueOfchar.concat(String.valueOf(character));

答案 1 :(得分:0)

在这里,希望有所帮助

public static char move13(char letter) {
    if (letter >= 'a' && letter <= 'm')
        return (char) (letter + 13);
    if (letter >= 'A' && letter <= 'M')
        return (char) (letter + 13);
    if (letter >= 'n' && letter <= 'z')
        return (char) (letter - 13);
    if (letter >= 'N' && letter <= 'Z')
        return (char) (letter - 13);
    return letter;
}

public static String encode(String text) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < text.length(); i++) {
        char character = text.charAt(i);
        character = move13(character);
        sb.append(character);
        //System.out.println(valueOfchar);

    }
    return sb.toString();

}

char在StringBuilder (sb.append(char))中连接。在move13()中处理完每个字母后,您将返回连接的字符(sb.toString())。