当前位置: 首页 > 面试题库 >

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

应瀚
2023-03-14
问题内容

我正在做类似的事情

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

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



 类似资料:
  • 我对变量的作用域有问题。 我希望输出为,但结果是。为什么我在方法中改变了数组中的值,而原来的数组却改变了?

  • 我试图更新数组中的值,我尝试这样做:Mongoose,更新对象数组中的值 但这似乎对我不起作用: myLessonDB返回此项: 我正在尝试按所示的课程ID更改课程中的值,但它不起作用 没有错误或任何看起来在数组中找不到对象的内容 有人知道我做错了什么吗?

  • 当我单击Governates_nameedt(EditText)时,我有两个想要的数组。在AlertDialog中显示Governate_names,并根据我选择的值,在state_names数组中选择值。当我运行代码时,asList被更改,我在<code>create()中得到一个错误。show() 处于状态_nameedt(编辑文本)。 我的代码 我的错误 05-13 16:42:25.720

  • 问题内容: 我在变量范围方面遇到麻烦。 我期望输出到,但结果是。为什么我在方法中更改了数组中的值,但是原来的数组却更改了? 问题答案: Java中的数组是一个对象。当您通过创建数组时,它是在堆上创建的,并且返回一个参考值(类似于C中的指针)并将其分配给您的变量。 在C语言中,这表示为: 当您将该变量传递给方法时,您将传递给该方法中的局部(堆栈)变量分配(复制)的参考值。不会复制数组的内容,仅复制参

  • 我正在为这学期的java期末考试做练习,我正在做一些书中的问题。 编写一个方法,如果数组list1和list2完全相同,则返回true,使用以下标题: 公共静态布尔等于(int[]list1,int[]list2) 这是我的密码。它在返回语句旁边给出了“非法的语句开始”。我做错了什么?

  • 假设我有2个无符号数字,每个32位,保存在一个数组中。第一个数字包含在位置 [0; 3] 中,第二个数字包含在位置 [4; 8] 中。我现在要更改其中一个数字的值,以下代码是否允许/有问题?