Не работает корректно замена символов в задачке на шифрование с обратным алфавитом

102
23 марта 2021, 09:50

Имеется задача на шифрование, где каждый из входящих в строку символов английского алфавита надо заменить на его "зеркальный", т.е. такой же по номеру с конца - a→z, b→y, c→x, ... x→c, y →b, z→a.

Попробовал сделать это без массивов или списков, через строки - в результате замена работает только для последней части алфавита, т.е. символы с n по z меняет на нужные, а символы с a по m - нет, оставляя их в первозданном виде.

public class Main {
    public static void main(String[] args) {
        String alphabet = "abcdefghijklmnopqrstuvwxyz";
        Scanner scanner = new Scanner(System.in);
        String initialPhrase = scanner.nextLine().trim();
        String encryptedPhrase = "";
        for (int i = 0; i < initialPhrase.length(); i++) {
            encryptedPhrase += String.valueOf(encrypt(initialPhrase.charAt(i), alphabet));
        }
        System.out.println(encryptedPhrase);
    }
    public static char encrypt(char ch, String str) {
        for (int i = 0; i < str.length(); i++) {
            if (ch == str.charAt(i)) {
                ch = str.charAt(str.length() - i - 1);
            }
        }
        return ch;
    }
}

Кто-нибудь может объяснить, почему метод encrypt(ch, str) срабатывает только для второй половины алфавита?

Answer 1
for (int i = 0; i < str.length(); i++) {
    if (ch == str.charAt(i)) {
        ch = str.charAt(str.length() - i - 1);
    }
}

Необходимо реализовать выход из цикла после того, как значение переменной ch было обновлено, иначе для первой половины оно меняется дважды (туда и обратно).

READ ALSO
Верно ли утверждение, что абстрактные классы используются для агрегации общих свойств объектов, а интерфейсы для агрегации общих функц. возможностей?

Верно ли утверждение, что абстрактные классы используются для агрегации общих свойств объектов, а интерфейсы для агрегации общих функц. возможностей?

Верно ли утверждение, что абстрактные классы используются для агрегации общих свойств объектов, а интерфейсы для общих функциональных возможностей?

86
java -version в cmd

java -version в cmd

Возник такой вопрос, почему командная строка использует версию 18, и как ее поменять? Я понимаю, что из-за того, что наша java до 8-го пакета включительно...

142
Выдает FileNotFoundException, хотя путь к файлу верен

Выдает FileNotFoundException, хотя путь к файлу верен

Данный метод считывает построчно таблицу английских слов с переводом и транскрипциейНо почему-то AndroidStudio не видит этот файл, хотя он лежит...

89
Вставить файл в форму

Вставить файл в форму

У меня есть blob, и мне необходимо добавить его к форме чтобы при отправке формы этот файл тоже отправился на сервер

106