可能重复:
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'到达?我该如何解决?
寻求帮助。
答案 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