如何使用方法定义字符串数组?

时间:2018-12-06 13:23:52

标签: java caesar-cipher

我编写了一种方法来加密消息(使用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

我在做什么错了?

2 个答案:

答案 0 :(得分:3)

  

但是我得到了超出界限异常的数组索引

您正在从k循环0message.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。