Java 如何检查成员是否存在

Java 如何检查成员是否存在,java,Java,所以我已经实现了insert方法,它工作得很好,但是我的问题是如何检查一个成员是否已经在列表中,我希望程序检查该成员是否已经在列表中,但是检查程序不工作。如果成员包含在列表中,我希望程序将该成员放入team1,如果该成员不在列表中,则显示“成员不存在”。我做了一个检查方法,但不起作用。我是编程新手,我真的需要帮助。请用你的知识来启发我 class Node { protected String info; protected Node next; public Node(

所以我已经实现了insert方法,它工作得很好,但是我的问题是如何检查一个成员是否已经在列表中,我希望程序检查该成员是否已经在列表中,但是检查程序不工作。如果成员包含在列表中,我希望程序将该成员放入team1,如果该成员不在列表中,则显示“成员不存在”。我做了一个检查方法,但不起作用。我是编程新手,我真的需要帮助。请用你的知识来启发我

class Node
{
    protected String info;
    protected Node next;
    public Node(String value)
    {
        info = value;
        next = null;
    }
}
class LinkedList
{
    private Node head;
    private int count;
    public LinkedList()
    {
        head = null;
        count = 0;
    }
    public void insert( String name)
    {
        Node a = new Node(name);
        a.next = null;
        count++;
        if (head == null)
        {
            head = a;
            return;
        }
        for(Node cur = head; cur != null; cur = cur.next)
        {
            if (cur.next == null)
            {
                cur.next = a;
                return;
            }
        }
    }

    public void checker(String name)
    {

        for(Node cur = head; cur != null; cur = cur.next)
        {
            if(cur.info == name)
            {
                insertteam1(name);
                System.out.print("OK");
            }
            else
            {
                System.out.print("member does not exist");
            }
        }
    }
    public void insertteam1(String name)
    {
        Node b = new Node(name);
        b.next = null;
        count++;
        if (head == null)
        {
            head = b;
            return;
        }
        for(Node cur = head; cur != null; cur = cur.next)
        {
            if (cur.next == null)
            {
                cur.next = b;
                return;
            }

        }
    }

在下面的代码中,

if(cur.info==name){/}

您正在使用
==
比较字符串信息,这在java中不是比较字符串的正确方法

使用
if(cur.info.equals(name)){/}


如果要进行不区分大小写的比较,请使用
if(cur.info.equalsIgnoreCase(name)){/}

请修复格式。您可以在正在组合的问题下方看到即时预览。在你的问题中也没有具体的jcreator。什么是
team1
?你也应该张贴你如何使用它。顺便说一句,使用JDK(LinkedList)中的类名是个坏主意。可能是@user3404896的重复。您是如何确定检查失败的?“它不起作用”是什么意思?您的预期结果与实际结果有何不同?检查器不起作用,因为它只打印“成员不存在”,即使名称在列表上。我怀疑这是问题所在。在大多数情况下,字符串上的
==
具有与equals相同的结果。这肯定是一件坏事,但我认为问题出在别处。@NeplatnyUdaj这似乎是我的主要问题,尽管可能还有其他问题。@NeplatnyUdaj在大多数情况下
=
的结果与
equals
的结果不同。它仅在插入字符串常量的情况下,或在比较
字符串的实例时,才具有相同的结果。对于来自外部源的字符串或在运行时构造的字符串,它永远不会有相同的结果。在这种情况下的绝大多数情况下,
=
会导致逻辑失败。@NeplatnyUdaj Jason是对的,
=
只比较这些引用指向的对象是否相等,而不比较存储在string@NeplatnyUdaj你的JVM工作得很好。
==
equals()
之间的差异是众所周知的,讨论得非常透彻,我认为没有理由在这里进一步讨论。您可以参考或其他任何地方进行解释。