Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的函数总是返回false,即使它以前发现return true? 公共布尔包含(对象数据) { 节点温度=新节点(数据); 节点当前=head.getNext(); 对于(int i=0;i_Java_Return - Fatal编程技术网

Java 为什么我的函数总是返回false,即使它以前发现return true? 公共布尔包含(对象数据) { 节点温度=新节点(数据); 节点当前=head.getNext(); 对于(int i=0;i

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

我的代码在上面,不管发生什么,它都返回false。如果它发现一个真实的条件,它将打印“true”,并且仍然返回false。我做错了什么?我有完全相同的函数,只不过它返回的是一个整数而不是布尔值,并且它使用相同的方法/代码工作得非常好。4

我的函数也有同样的功能,工作正常:

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())