使用数组中的值的Java-replace()方法正在更改数组值吗?
我在做类似的事情使用数组中的值的Java-replace()方法正在更改数组值吗?,java,arrays,encryption,replace,replaceall,Java,Arrays,Encryption,Replace,Replaceall,我在做类似的事情 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 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
,然后我在decrypt()中输入ngV
,它会给我像1q3
。只有部分字母正确切换,而另一些字母没有正确切换。使用数组值的replace()?我显然是Java新手
我也读了,但是replaceAll()
没有起作用。我怀疑你的问题是“为什么链接。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’
答案是一次看一个字母,然后改变它。循环遍历字符串并创建一个新字符串。字符串是不可变的,因此需要存储a.replace(…)的结果代码>“如果我在encrypt()中输入像123这样的东西,它就会输出ngV”,这永远不会发生。我很抱歉,伙计们,我再次编辑了我的代码。我有a=a.replace();那么Tunaki你是在建议我存储a.replace的结果吗。然而,问题仍然是一样的,你想要我演示它的视频吗?@MichaelChen使用用户名前的“@”向他发送通知。请提供完整的示例。上面发布的代码不起作用:数组不能这样分配,并且list[4]
不存在。将问题分解为您自己的小样本程序,并将其发布在此处。