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()没有用。

我怀疑你的问题是“为什么链接.replace表现得很奇怪”而且arrays没有改变。 你可以certificatereplace非常容易改变数组:

  System.out.println(Arrays.toString(list)); encrypt("abc"); System.out.println(Arrays.toString(list)); 

那你的代码怎么了? 每次更换一个字母时,你最后会得到一个新的字符串,你再次替换字母。 我没有完整的源代码,所以我将展示一个真正简单的版本:

 a = a.replace("a", "b"); a = a.replace("b", "c"); a = a.replace("c", "d"); 

因为“abc”是……’ddd’。

答案是每次查看每个字母并进行更改。 循环遍历字符串并创建一个新字符串。