在Alphabet中移位字符

时间:2012-04-05 06:43:31

标签: java char

  

可能重复:
  ROT-13 function in java?

我必须将所有字符串从字母表中的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'到达?我该如何解决?

寻求帮助。

3 个答案:

答案 0 :(得分:4)

这是因为'z'之后的下一个字符是标点符号等等。你可以移动,以便'z'例如为'n'。

toEncode[i] = (toEncode[i] + 13 - (int)'a') % 26 + (int)'a';

答案 1 :(得分:0)

System.out.println(('z'+ (char)13)); //output -135
System.out.println((char)('z'+ (char)13)); //output - ?

答案 2 :(得分:0)

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