我将根据用户输入的shift键生成密码字母(基于Caesar Cipher),而我的代码似乎是错误的。
我不明白我的cipherAlphabet方法有什么问题,因为每当我尝试测试结果时,它最终都会给我一个" java.lang的错误。 ArrayIndexOutOfBoundsException:26 。"
所以,它可能与我设置的数组有关,但我看不到这一点。我知道这可能是非常简单的事情,但有人可以帮助我吗?
P.S。 - 我试图寻找SO和其他网站上的现有提示以获得一些帮助,但无济于事。
我会在一种方法中进行所有的转换和加密,但我无法做到这一点(显然,我必须这样做)。这就是我所拥有的:
private String message;
private static int shiftKey;
public static final String[] ALPHABET = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "N",
"M", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
public static String[] cipherAlphabet = new String[ALPHABET.length];
/**
* Constructor for objects of class CaesarShiftEncryption
*/
public CaesarShiftEncryption(String m, int shift)
{
message = m;
shiftKey = shift;
}
public static String[] cipherAlphabet()
{
for(int i = 0; i < ALPHABET.length; i++)
{
if(i >= 23)
{
cipherAlphabet[i] += ALPHABET[26 - shiftKey];
}
else
{
cipherAlphabet[i] += ALPHABET[i + shiftKey];
}
}
return cipherAlphabet;
}
答案 0 :(得分:1)
你需要重新开始!尝试这样的事情,使用mod操作,如果碰巧碰到结束,你将在字母表的开头重新启动
cipherAlphabet[i] += ALPHABET[(i + shiftKey) % ALPHABET.length]