Java - метод replace () с использованием значений из массивов меняет значения массива?

Я делаю что-то вроде

public static String[] list = {"a","b","c","d",}  //It gives me a NullPointeException if I didn't use static
public String encrypt(String a){
   a = a.replace(list[0],list[2]);
   a = a.replace(list[4],list[3]);
   return a;
}

и у меня есть другой метод, который просто меняет его

public String decrypt(String a){
   a = a.replace(list[2],list[0]);
   a = a.replace(list[3],list[4]);
   return a;
}

Конечно, это упрощено, реальный код, который я использую, использует весь алфавит и некоторые цифры. Итак, вот моя проблема: если я введу что-то вроде123 вencrypt() и это выводитngV тогда я введуngV в decrypt () это дает мне как1q3, Только некоторые буквы правильно переключены, а некоторые нет. Есть ли что-то сreplace() метод, использующий значения массива, которые мне не хватает? Я, очевидно, новичок в Java.

Тоже читаюJava replace () проблемы ноreplaceAll() не сработало.

Ответы на вопрос(1)

Ваш ответ на вопрос