我编写了一种方法来加密消息(使用CaesarCipher),我想使用该方法对所有26个密钥进行加密。 因此,我想遍历每个String数组以对其进行定义。
public String[] getMessage(String message) {
String[] newMessage = new String[26];
int index = 0;
for (int k = 0; k < message.length(); k++){
newMessage[index] = encryptMessage(message, index);
index+= 1;
}
return newMessage;
}
但是我得到一个ArrayIndexOutOfBoundsException
。
我在做什么错了?
答案 0 :(得分:3)
但是我得到了超出界限异常的数组索引
您正在从k
循环0
到message.length()
的返回值(不包括),但是您正在使用它索引到newMessage
中,其中有一个最大索引为25。显然,message
字符串的长度超过26个字符,因此k
进入> 25
,这就是为什么您越界的原因。
将k
限制为所索引内容的长度,而不是字符串的长度。或者,如果假定数组的长度与字符串的长度相同,请使用new String[message.length()]
而不是new String[26]
创建它。 (在那种情况下,我仍将循环更改为使用< newMessage.length
,但是如果它们的长度相同,则成为样式问题。)
答案 1 :(得分:1)
数组从零开始。您将大小设置为26。然后,数组的最后一个索引为25。即,它的结尾为0、1、2、3,...,24、25。因此,您必须为重复句子加长1。