Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.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 执行equals()方法时出错_Java - Fatal编程技术网

Java 执行equals()方法时出错

Java 执行equals()方法时出错,java,Java,我正在尝试测试我的一个类,但是Eclipse一直向我指出一个错误,指向publicboolean equals(Object o)(给定另一个对象,它是否也是一个具有相同行和列值的坐标),尽管我正在尝试测试另一个方法,它是public boolean nexting(Coord other)。因此,当我尝试执行adjcent(Coord other)方法时,它指向equals(Object o)方法的错误,尤其是行 返回此.equals(newValue)smb能帮我吗 import j

我正在尝试测试我的一个类,但是Eclipse一直向我指出一个错误,指向public
boolean equals(Object o)
(给定另一个对象,它是否也是一个具有相同行和列值的坐标),尽管我正在尝试测试另一个方法,它是
public boolean nexting(Coord other)
。因此,当我尝试执行
adjcent(Coord other)
方法时,它指向
equals(Object o)
方法的错误,尤其是行
返回此.equals(newValue)smb能帮我吗

    import java.util.*;
    public class Mainnn {


        public static void main(String [] args)
        {
            Coord temp0 = new Coord(3,3);
            Coord temp = new Coord(2,3);
            System.out.println(temp);
            temp0.adjacent(temp);



        }
    }


public class Coord {

    public final int r;
    public final int c;


    public Coord(int r, int c)
    {
        this.r = r;
        this.c = c;
    }

    public Coord step(Direction d)
    {
        if(d == Direction.N)
        {
            Coord newValue = new Coord(r + 1, c);
            return newValue;
        }
        else if(d == Direction.S)
        {
            Coord newValue = new Coord(r - 1, c);
            return newValue;
        }
        else if(d == Direction.E)
        {
            Coord newValue = new Coord(r, c + 1);
            return newValue;
        }
        else if(d == Direction.W)
        {
            Coord newValue = new Coord(r, c - 1);
            return newValue;
        }

        else
            return this;

    }

    public Coord copy()
    {
        Coord clone = new Coord(r, c);
        return clone;

    }

    public boolean equals(Object o)
    {
        if(o instanceof Coord)
        {
            Coord newValue = (Coord)o;
            return this.equals(newValue);
        }
        else 
            return false;
    }

    public boolean adjacent(Coord other)
    {
        Coord temp1 = new Coord(r + 1, c);
        Coord temp2 = new Coord(r - 1, c);
        Coord temp3 = new Coord(r, c + 1);
        Coord temp4 = new Coord(r, c - 1);

        if(temp1.equals(other))
            return true;
        else if(temp2.equals(other))
            return true;
        else if(temp3.equals(other))
            return true;
        else if(temp4.equals(other))
            return true;
        else 
            return false;

    }

    public String toString()
    {
        return String.format("@(%d,%d)", r,c);
    }


}

您的equals方法似乎是递归的。它将调用自身并导致无限递归,从而导致堆栈溢出

试试这个:

public boolean equals(Object o)
{
    if(o instanceof Coord)
    {
        Coord newValue = (Coord)o;
        return this.r == newValue.r && this.c == newValue.c;
    }
    else 
        return false;
}

您的equals方法似乎是递归的。它将调用自身并导致无限递归,从而导致堆栈溢出

试试这个:

public boolean equals(Object o)
{
    if(o instanceof Coord)
    {
        Coord newValue = (Coord)o;
        return this.r == newValue.r && this.c == newValue.c;
    }
    else 
        return false;
}

谢谢你的回答@juhist!但是在修复错误之后,为什么temp0.nextant(temp);还我什么?什么都不还?当然,它返回:它返回false或true。你的意思是它总是返回false,即使它应该返回true?如果是这样的话,也许您应该在Stackoverflow中问另一个问题,因为我一眼就看不出您的相邻方法有任何错误。很抱歉,我忘了提到它是有效的。谢谢@juhist!谢谢你的回答@juhist!但是在修复错误之后,为什么temp0.nextant(temp);还我什么?什么都不还?当然,它返回:它返回false或true。你的意思是它总是返回false,即使它应该返回true?如果是这样的话,也许您应该在Stackoverflow中问另一个问题,因为我一眼就看不出您的相邻方法有任何错误。很抱歉,我忘了提到它是有效的。谢谢@juhist!