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

fae0ux8s  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(303)

我编写了一个加密消息的方法(使用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 .
我做错什么了?

btxsgosb

btxsgosb1#

但我得到一个数组索引越界异常
你在循环 k0 直到 message.length() 的返回值(独占),但您正在使用它索引到 newMessage ,其最大索引为25。显然 message 字符串长度超过26个字符,因此 k 转到 > 25 所以你才越界。
限制 k 根据索引内容的长度,而不是字符串的长度。或者,如果数组的长度应该与字符串的长度相同,则使用 new String[message.length()] 而不是 new String[26] . (我还是会把循环换成 < newMessage.length 在这种情况下,但如果它们的长度相同,就成了风格的问题。)

iqih9akk

iqih9akk2#

数组首先从零开始。您将大小设置为26。数组的最后一个索引是25。也就是说,它以0,1,2,3,…,24,25结束。因此,你必须为一个重复的句子做一个长-1。

相关问题