对于一个类项目我正在制作类似ROT13的加密方法,我们唯一的不同之处在于它不是第13个字符,而是第9个字符。令人惊讶的是,我能够生成一些适用于小写字母的内容,以查看我的方法是否有效。
它有效,但出于某种原因,会出现奇数字符,更常见的是问号,有时只是原始字符数组中没有的额外字符。
例如:我的名字会产生ljb|nh?
。 |
和?
不应该在那里,至少据我所知他们不应该。
任何人都可以通过查看我的代码告诉我为什么会这样吗?
public class Encrypt {
public static void main(String[] args) {
// Lower a-z: 97-122; Higher A-Z: 65-90
jumble("casey");
}
public static void jumble(String input) {
char[] phraseChar = input.toCharArray();
// StringBuilder output = new StringBuilder("");
for (int i = 0; i < phraseChar.length; i++) {
System.out.print("" + phraseChar[i]);
}
System.out.println();
for (int j = 0; j < phraseChar.length; j++) {
int i = (int) phraseChar[j];
if (i >= 'a' && i <= 'z') {
i += 9;
if (i > 'z') {
int newChar = 96 + (i - 'z');
System.out.print((char) newChar);
}
System.out.print((char) i);
}
}
}
}
任何可以帮助我查明这个问题的人都是圣人。
答案 0 :(得分:2)
if (i >= 'a' && i <= 'z') {
i += 9;
if (i > 'z') {
int newChar = 96 + (i - 'z');
System.out.print((char) newChar);
}
System.out.print((char) i);
}
如果i
超出界限,则表示您正在打印“已更正”字符和原始越界字符。放一个else
我不是圣人。使用调试器来完成这些工作。这些知识将来会很方便。