gpt4 book ai didi

Java - 使用数组中的值的replace()方法正在更改数组值?

转载 作者:行者123 更新时间:2023-12-01 10:19:51 25 4
gpt4 key购买 nike

我正在做类似的事情

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

当然这是简化的,我使用的实际代码使用整个字母表和一些数字。所以这是我的问题:如果我在 encrypt() 中输入类似 123 的内容并且它输出 ngV 那么我输入 ngV > 进入解密()它给了我像1q3。只有一些字母被正确转换,有些则没有。使用数组值的 replace() 方法是否缺少我缺少的内容?我显然是 Java 新手。

我还读过Java replace() problemsreplaceAll() 没有成功。

最佳答案

我怀疑你的问题是“为什么链接 .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()方法正在更改数组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35670550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com