用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方法给我一个错误。你能在你的问题中发布日志吗?我想,空指针可能是另一个问题。你能在你的问题中发布日志吗?我想,空指针可能是另一个问题