Итак, моя главная цель - создать программу, которая сможет расшифровать шифр Цезаря. У меня все настроено так, что у меня есть обычный алфавит, настроенный в одном массиве, а затем массив декодеров, где я сместил алфавит на основе клавиши Shift / Key, которую вводит пользователь. (ie. Если пользователь вводит сдвиг 6, массив регулярных алфавитов начинает a, b, c ... и затем массив декодеров запускает g, h, i ...).
В настоящее время я застрял при прохождении зашифрованного сообщения (введенного пользователем) и декодировании каждой буквы одна за другой, сопоставляя ее с массивом декодера. Он продолжает давать мне ошибку индекса за пределами границ, хотя в установленном мною для l oop я вычел одно из длины сообщения, чтобы компенсировать его, начиная с 0.
. ошибка происходит только в последнем символе (это то, что 35. У меня есть строка из 35 символов, которую я использую для тестирования). Но когда я пытаюсь распечатать декодированное сообщение вплоть до ошибки, я просто получаю нулевые значения (я сохраняю каждый декодированный символ в массиве и печатаю каждый символ, сохраненный при выполнении команды l oop).
Вот фрагмент кода, на котором я сейчас застрял:
//Decoding message by looping through each letter in String message
for (int x = 0; x < (message.length() - 1); x ++) //Gets next letter in message
{
for (int y = 0; y < (decodedArray.length - 1); x++) //Goes through decodedArray array
{
if (String.valueOf(message.charAt(x)) == (decodedArray[y])) //Comparing character to each position in decodedArray
{
decodedMessage[x] = alphabetArray[y];
}
System.out.print(decodedMessage[x]); //Testing only. Prints each character stored in array but only printing nulls.
}
}
Я еще не добавил никаких проверок пробелов, потому что в данный момент я застрял на этой ошибке, но если Любой из вас может добавить это, это было бы очень признательно. Я не уверен, сработает ли сравнение символа с пробелом.