3

可能重复:
Java 中的 ROT-13 函数?

我必须将字符串中的所有字符移到字母表中的 13 个位置

private static String encode(String line) {
    char[] toEncode = line.toCharArray();
    for (int i = 0; i < toEncode.length; i++) {
        if (Character.isLetter(toEncode[i])) {
            toEncode[i] += 13;
        }
    }
    line = String.valueOf(toEncode);
    return line;
}

问题是例如'z'得到一个?。我该如何解决?

谢谢帮助。

4

3 回答 3

5

这是因为“z”之后的下一个字符是标点符号等等。例如,您可以移动,使“z”变为“n”。

toEncode[i] = (toEncode[i] + 13 - (int)'a') % 26 + (int)'a';
于 2012-04-05T06:58:45.607 回答
0
System.out.println(('z'+ (char)13)); //output -135
System.out.println((char)('z'+ (char)13)); //output - ?
于 2012-04-05T06:51:23.880 回答
0

如果计算的字符大于最后一个字母(z => 122 或 Z => 90),只需从计算值中减去最后一个字母的值。您可以在整个互联网上找到这些数字,例如这里

于 2012-04-05T06:53:09.050 回答