gpt4 book ai didi

java - 为什么我的函数总是返回 false,即使它之前发现 return true?

转载 作者:行者123 更新时间:2023-12-02 05:17:23 26 4
gpt4 key购买 nike

public boolean contains(Object data)
{
Node temp = new Node(data);
Node current = head.getNext();

for(int i = 0; i < size(); i++)
{
//System.out.println(current.getData());
if(temp.getData() == current.getData())
{
System.out.println("true");
return true;
}
else
{
current = current.getNext();
}
}
return false;
}

我的代码在上面,无论如何它都会返回 false。如果它找到一个 true 条件,它会打印“true”并且仍然返回 false。我在这里做错了什么?我有完全相同的函数,只是它返回一个整数而不是 boolean 值,并且使用相同的方法/代码可以完美地工作。4

我的函数具有相同的功能并且工作正常:

public int indexOf(Object data)
{
Node temp = new Node(data);
Node current = head.getNext();

for(int i = 0; i < size(); i++)
{
if(temp.getData() == current.getData())
{
return i;
}
current = current.getNext();
}

return -1;
}

最佳答案

您对这个表达式有疑问:

if(temp.getData() == current.getData())

你的数据用Object表示已经够糟糕的了- 它确实应该是参数化类型*。但是,由于您使用的是 == ,您要检查对象是否是同一个实例,而不是它们是否等效。

将比较更改为使用 .equals相反。

if(temp.getData().equals(current.getData())

*:如果您想知道,您可以更改 NodeNode<T>相反,将要键入的链接列表实例更改为 LinkedList<Node<T>> ,并更改 contains 的方法参数成为public boolean contains(T data) .

关于java - 为什么我的函数总是返回 false,即使它之前发现 return true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26813159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com