3

当用户输入他们已经降落时,我试图移除我的飞机。这行不通。谁能看到我的代码有任何问题,为什么它不起作用。

这是我的代码:

飞机

static boolean isLanded;
public boolean isLanded() {
        return isLanded;
    }


    public void setLanded(boolean isLanded) {
        this.isLanded = isLanded;
    }

飞机商店

public void removeLandedPlanes(PlaneStore store)
    {
        if(Plane.isLanded = true)
        {
            airlineMap.remove(store);
        }
    }

主应用

case 3:
                    System.out.println("Remove Landed Planes.");
                    airlineMap.removeLandedPlanes(airlineMap);
                    airlineMap.print();
                    break;

PlaneStore 中的 HashMap 声明

HashMap<String, TreeMap<String, Plane>> airlineMap;

    public PlaneStore() 
    {
        airlineMap = new HashMap<String, TreeMap<String, Plane>>();
    }

然后在主 PlaneStoreairlineMap = new PlaneStore();

这似乎所做的是使每个平面对象都必须这样isLandedfalse

4

2 回答 2

2
if(Plane.isLanded = true)

请注意,这是值分配truePlane.isLanded。您想使用比较运算符==而不是=.

if(Plane.isLanded == true)

而且由于这boolean已经是一个,您实际上应该== true完全省略:

if(Plane.isLanded)
于 2012-12-13T12:39:20.490 回答
0

您分配给Plane.isLanded,而不是测试相等性

 if(Plane.isLanded = true)

应该

 if(Plane.isLanded == true)

你可以完全避免这种情况

if (Plane.isLanded)

或者把常数项放在左边

if (true == Plane.isLanded)

如果您犯了最初的错误=而不是==

于 2012-12-13T12:39:09.237 回答