0

作为我对 java 的研究的一部分,我正在尝试创建一个搜索函数,它接收一个与 objectString key的 a 相关的参数。destinationPlane

在此之前,我创建了一个Queue20 个对象,每个对象都具有不同的参数,现在我尝试通过destination.

这是我到目前为止所拥有的:

    public Plane searchDestination(String key)
    {
        Plane current = first;
        while(current.destination != key)
        {
            if(current.next == null)
                return null;
            else
                current = current.next;
        }
        return current;
    }

它返回成功的构建,但不返回具有匹配条件的对象,我尝试System.out.println(current);在之后添加,return current;但编译器抛出错误。我还有一个.displayPlane();应该显示所有平面详细信息的功能(并且在其他情况下也可以使用),但是当我在我current.displayPlane();之后添加时,return current;我收到一个错误,说它无法访问。

我是否正确地进行了搜索,或者我错过了什么?

4

2 回答 2

2

代替

while(current.destination != key)

while(!current.destination.equals(key))

对于任何对象(如String)比较,您应该始终使用equals. 不要使用==or!=因为它只比较对象的引用。对于原始类型数据(如int),您可以使用==!=

于 2013-11-02T08:08:40.150 回答
0

您是否考虑过使用目的地地图到飞机。

 Map<String, Plane> destToPlane = new HashMap<String,Plane>();
 if (destToPlane.containsKey(key))
    return destToPlane.get(key);
 else
    System.out.println("Key not in there");
于 2013-11-02T08:14:35.067 回答