我编写了一个加密消息的方法(使用caesarcipher),我想用这个方法用所有可能的26个密钥加密一条消息。所以我想迭代每个字符串数组来定义它。
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
.
我做错什么了?
2条答案
按热度按时间btxsgosb1#
但我得到一个数组索引越界异常
你在循环
k
从0
直到message.length()
的返回值(独占),但您正在使用它索引到newMessage
,其最大索引为25。显然message
字符串长度超过26个字符,因此k
转到> 25
所以你才越界。限制
k
根据索引内容的长度,而不是字符串的长度。或者,如果数组的长度应该与字符串的长度相同,则使用new String[message.length()]
而不是new String[26]
. (我还是会把循环换成< newMessage.length
在这种情况下,但如果它们的长度相同,就成了风格的问题。)iqih9akk2#
数组首先从零开始。您将大小设置为26。数组的最后一个索引是25。也就是说,它以0,1,2,3,…,24,25结束。因此,你必须为一个重复的句子做一个长-1。