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;

}

当然,这是经过简化的,我使用的实际代码使用整个字母和一些数字。因此,这里是我的问题:如果我输入像123encrypt()它输出ngV

然后我输入ngV到解密()它给了我一样1q3。只有一些字母可以正确切换,而有些则不能。replace()使用数组值的方法有什么我所缺少的吗?我显然是Java新手。

回答:

我怀疑您的问题是“为什么链接.replace行为异常”并且数组没有改变。您可以证明replace不会轻易改变数组:

    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”。

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

以上是 Java-使用数组中的值的replace()方法更改数组的值? 的全部内容, 来源链接: utcz.com/qa/413779.html

回到顶部