【问题标题】:remove element frome array of string [duplicate]从字符串数组中删除元素[重复]
【发布时间】: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 以更了解。谢谢跨度>
  • 非常感谢您提供的信息..

标签: java arrays string


【解决方案1】:

就像@Oussama ZAGHDOUD说的,

使用 if (element[i].equals(value)) 代替 if (element[i] == value)

【讨论】:

  • 在这种情况下,它只打印我们要删除的特定元素
  • [Alexandr, Ahmed, Maria, elf, Omar, Mariam] 输入 >> 精灵输出 >>[elf]
【解决方案2】:

您的代码缺少一个“!”在条件之前,您需要使用 .equals() 而不是"==":

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] .equals( 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) throws IOException {
     String[] group_A = {"Alexandr", "Ahmed", "Maria", "elf", "Omar", "Mariam"};
        Scanner s  = new Scanner(System.in);     
        System.out.println(Arrays.toString(group_A));
        String value = s.nextLine();
        //we already initialized a value for it
        group_A = remove(group_A,value);
        System.out.println(Arrays.toString(group_A));
}

【讨论】:

    猜你喜欢
    • 2015-06-23
    • 2012-07-10
    • 1970-01-01
    • 2020-08-29
    • 2021-08-30
    • 1970-01-01
    • 2021-05-19
    • 2017-12-24
    • 1970-01-01
    相关资源
    最近更新 更多