Java - Die Methode replace (), die Werte aus Arrays verwendet, ändert die Array-Wert

Ich mache so etwas wie

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;
}

und ich habe eine andere Methode, die es einfach umkehrt

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

Natürlich ist das vereinfacht, der echte Code, den ich verwende, verwendet das gesamte Alphabet und einige Zahlen. Also hier ist mein Problem: Wenn ich so etwas wie @ einge123inencrypt() und es gibtngV dann gebe ich @ engV in decrypt () gibt es mir wie1q3. Nur einige Buchstaben sind richtig geschaltet und andere nicht. Gibt es etwas mit demreplace() Methode mit Array-Werten, die ich vermisse? Ich bin offensichtlich neu in Java.

Auch ich lese Java ersetzen () Probleme aberreplaceAll() hat nicht geklappt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage