Как определить массив строк с помощью метода? - PullRequest
0 голосов
/ 06 декабря 2018

Я написал метод для шифрования сообщений (используя 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 ]

0 голосов
/ 06 декабря 2018

Массив начинается с нуля первым.Вы устанавливаете размер равным 26. Последний индекс массива равен 25. То есть он заканчивается на 0,1,2,3, ..., 24,25.Таким образом, вы должны сделать длинную-1 для повторного предложения.

0 голосов
/ 06 декабря 2018

Но я получаю исключение индекса массива вне границ

Вы зацикливаете k с 0 до возвращаемого значения message.length() (исключая), но вывы используете его для индексации в newMessage, который имеет максимальный индекс 25. Ясно, что строка message имеет длину более 26 символов, поэтому k переходит на > 25, поэтому вы собираетесьза пределы.

Ограничьте k длиной того, что вы индексируете, а не длиной строки.Или, если предполагается, что массив имеет ту же длину, что и строка, создайте его с new String[message.length()] вместо new String[26].(Я бы все же изменил цикл на использование < newMessage.length в этом случае, но это становится вопросом стиля, если они имеют одинаковую длину.)

...