【发布时间】:2023-04-09 18:24:01
【问题描述】:
我创建了一个函数来删除数组中的特定元素,但我们遇到的问题是,当我们从 s.next() 中获取要删除的元素的值时,它并没有被删除,而是当我们已经为它初始化了一个值,它正在删除
例如,我们有一个函数 remove
public static String[] remove(String[] element, String value) {
int validSize = 0;
String[] n_elements = new String[0];
for (int i = 0; i < element.length; i++) {
if (element[i] == value) {
element[validSize] = element[i];
validSize++;
}
n_elements = new String[validSize];
if (validSize >= 0) System.arraycopy(element, 0, n_elements, 0, validSize);
}
return n_elements;
}
主要
public static void main(String[] args) {
String[] group_A = {"Alexandr", "Ahmed", "Maria", "elf", "Omar", "Mariam"};
Scanner s = new Scanner(System.in);
System.out.println(Arrays.toString(group_A));
String value = "elf";
//我们已经为它初始化了一个值
group_A = remove(group_A,value);
System.out.println(Arrays.toString(group_A));
}
}
输出正确
[Alexandr, Ahmed, Maria, elf, Omar, Mariam]
[Alexandr, Ahmed, Maria, Omar, Mariam]
但如果我们从用户那里获得价值,它不会删除
String value = s.next();
输出是
[Alexandr, Ahmed, Maria, elf, Omar, Mariam]
elf
[Alexandr, Ahmed, Maria, elf, Omar, Mariam]
【问题讨论】:
-
尝试使用 .equals() 方法比较字符串,"==" 比较引用而不是字符串的内容。 element[i] == value ===> element[i].equals(value)
-
在删除方法中?
-
这能回答你的问题吗? How do I compare strings in Java?
-
在任何地方,当你想比较两个字符串的内容时,使用方法“.equals()”,“==”用于比较两个字符串是否完全是同一个对象在记忆中。在您的情况下,您有两个具有相同内容的字符串,但每个字符串都是内存中的独立对象,您需要阅读有关 hw 以比较 Java 中的 String 并尝试阅读有关 Java 中的 String Pool 以更了解。谢谢跨度>
-
非常感谢您提供的信息..