Обратите пристальное внимание на таблицу Ascii и ваше выражение
newCurrValue = ((currValue-3) % 26);
Вы вычитаете 3 из текущего значения и берете мод 26 после этого, что гарантирует, что ваш результат находится в пределахграницы от 0 до 26. Если вы посмотрите на это в таблице, вы обнаружите, что нет ни значений от a
до z
, ни значений от A
до Z
.На самом деле все эти символы либо невидимы, либо не заполнены.
В следующем примере демонстрируется правильное использование строчных букв:
newCurrValue = ((currValue - 'a') % 26 - 3); // 3 is your shift value
// if the result is negative, simply add 26 (amount of smallercase characters)
if (newCurrValue < 0) {
newCurrValue += 26;
}
newCurrValue += 'a'; // add 'a' again, to be within 'a' - 'z'
Кроме того, несмотря на небольшую ошибку, вы не увидели быВ любом случае результат на консоли, так как вы пропустили оператор журнала:
System.out.println("Your encrypted text was: ");
for (int i = 0; i < encryptedTextArray.size(); i++) {
encryptedString += encryptedTextArray.get(i);
}
System.out.println(encryptedString); // output your result