Java 为什么我的函数总是返回false,即使它以前发现return true? 公共布尔包含(对象数据) { 节点温度=新节点(数据); 节点当前=head.getNext(); 对于(int i=0;i
我的代码在上面,不管发生什么,它都返回false。如果它发现一个真实的条件,它将打印“true”,并且仍然返回false。我做错了什么?我有完全相同的函数,只不过它返回的是一个整数而不是布尔值,并且它使用相同的方法/代码工作得非常好。4 我的函数也有同样的功能,工作正常:Java 为什么我的函数总是返回false,即使它以前发现return true? 公共布尔包含(对象数据) { 节点温度=新节点(数据); 节点当前=head.getNext(); 对于(int i=0;i,java,return,Java,Return,我的代码在上面,不管发生什么,它都返回false。如果它发现一个真实的条件,它将打印“true”,并且仍然返回false。我做错了什么?我有完全相同的函数,只不过它返回的是一个整数而不是布尔值,并且它使用相同的方法/代码工作得非常好。4 我的函数也有同样的功能,工作正常: public boolean contains(Object data) { Node temp = new Node(data); Node current = head.getNext(); fo
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;
}
public int indexOf(对象数据)
{
节点温度=新节点(数据);
节点当前=head.getNext();
对于(int i=0;i
此表达式存在问题:
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;
}
用对象
表示数据已经够糟糕的了——它实际上应该是一个参数化类型*。但是,由于您使用的是==
,因此您要检查对象是否是相同的实例,而不是它们是否等效
将比较改为使用.equals
if(temp.getData() == current.getData())
*:如果您想知道,您应该将
节点
改为节点
,将链接列表实例改为键入链接列表
,并将包含
的方法参数改为公共布尔包含(T数据)
,您将不得不添加更多上下文。我们不能只是猜测。提供一个完全可复制的示例。@SotiriosDelimanolis我所做的就是if(LL.contains(“something”)==true)//print
如何比较Java中的字符串?我怀疑prints“true”
.LL是一个包含3个节点的对象(单链表),代码太大,无法添加(200多行)@SotiriosDelimanolis我有完全相同的代码,除了在另一个方法中使用整数而不是布尔值,它返回正确的值。我也将附加该方法。
if(temp.getData().equals(current.getData())