用java中的scanner进行链表搜索

用java中的scanner进行链表搜索,java,search,linked-list,nodes,Java,Search,Linked List,Nodes,我想用扫描器在链表中搜索,但我做不到。我可以不用扫描仪进行搜索。这个代码有什么问题 我的搜索方法: public void Search(Object data){ Node tmp = head ; while(tmp != null ){ if(tmp.getData() == data){ System.out.println("Your input is in the list"); }

我想用扫描器在链表中搜索,但我做不到。我可以不用扫描仪进行搜索。这个代码有什么问题

我的搜索方法:

    public void Search(Object data){
    Node tmp = head ;
    while(tmp != null ){

        if(tmp.getData() == data){
            System.out.println("Your input is in the list");
        }

            tmp = tmp.getNext();


    }

}
我的主要课程是:

  public static void main(String[] args) throws ParseException {
    LinkedList list =new Linkedlist();
    ...... // adding methods etc.
    Scanner input = new Scanner(System.in);
    System.out.println("Enter your input: ");
    String x=input.next();
    list.Search(x);
}

您正在将
字符串
参数传递到
搜索(数据)
,该参数将被转换为
对象


您需要将
对象数据
参数类型转换为
字符串
,或者将方法签名更改为显式接受类型
字符串
您正在将
字符串
参数传递到正在转换为
对象的
搜索(数据)


您需要键入<代码>对象数据< /代码>参数以键入<代码>字符串< /> >,或更改方法签名以明确接受类型<代码>字符串 < /P> < P>以亚当提出的建议为基础,您可以考虑以下代码:

public void Search(String data){

     Node tmp = head ;
     while(tmp != null ){

         if(tmp.getData().equalsIgnoreCase(data)){
             System.out.println("Your input is in the list");
         }

            tmp = tmp.getNext();
     }   
}
您应该使用.equals()或.equalsIgnoreCase()来比较字符串,而不是使用==进行比较,后者将彼此作为对象进行比较


根据亚当提出的建议,你可以考虑下面的代码:

public void Search(String data){

     Node tmp = head ;
     while(tmp != null ){

         if(tmp.getData().equalsIgnoreCase(data)){
             System.out.println("Your input is in the list");
         }

            tmp = tmp.getNext();
     }   
}
您应该使用.equals()或.equalsIgnoreCase()来比较字符串,而不是使用==进行比较,后者将彼此作为对象进行比较



您能描述一下错误吗?我将输入作为数据写入列表中,但不匹配。代码没有给我一个错误,但它不能正常工作。@mancini13“它不能工作”作为对错误的描述是完全无用的。什么不起作用?它怎么不起作用?“it't not match”(它不匹配)更接近于此,但您没有包括您得到的内容,也没有包括您期望得到的内容。我希望我的输入与节点的数据匹配。我不能期望从搜索方法中得到任何其他信息。您能描述一下错误吗?我将输入作为数据写入列表中,但它不匹配。代码没有给我一个错误,但它不能正常工作。@mancini13“它不能工作”作为对错误的描述是完全无用的。什么不起作用?它怎么不起作用?“it't not match”(它不匹配)更接近于此,但您没有包括您得到的内容,也没有包括您期望得到的内容。我希望我的输入与节点的数据匹配。我不能期望从搜索方法中得到任何其他东西。是的,我尝试了所有这些方法,但任何东西都没有改变。我建议在带有断点的调试器中运行,以查看到底发生了什么。即异常、假阴性发现等。如果没有这些,任何人都很难帮助我,因为我也这么做了。使用扫描仪时,代码不会输入if条件,但当我使用类似list.Search(“输入”)的东西时,它会正常工作。在这种情况下,我建议使用更完整的代码版本编辑您的原始问题,以便其他人可以构建并帮助您调试。我解决了我的问题。我在构造函数中将head节点实现为null,这就是为什么它在equal方法中给了我一个错误。是的,我尝试了所有这些方法,但没有任何改变。我建议在带有断点的调试器中运行,以查看到底发生了什么。即异常、假阴性发现等。如果没有这些,任何人都很难帮助我,因为我也这么做了。使用扫描仪时,代码不会输入if条件,但当我使用类似list.Search(“输入”)的东西时,它会正常工作。在这种情况下,我建议使用更完整的代码版本编辑您的原始问题,以便其他人可以构建并帮助您调试。我解决了我的问题。我在构造函数中将head节点实现为null,这就是为什么它使用equal方法给我一个错误。你能在你的问题中发布日志吗?我想,空指针可能是另一个问题。你能在你的问题中发布日志吗?我想,空指针可能是另一个问题