我的循环布尔值没有编译

My loop boolean is not compiling

我需要这个方法来遍历我的ArrayList myZip,找到里面有没有匹配int zip的整数,然后去找到等于intZip的ZipCode;如果没有匹配则 return null.

public ZipCode findZip(int zip) {
    for (int i = 0; i < myZips.size(); i++) {
        if (zip == myZips.get(i)) 
            return myZips.get(i);}
        return null;
}

有什么想法吗?

这是邮政编码 Class:

public class ZipCode {

    private int zipCode;
    private String city;
    private String state;
    private double longitude;
    private double latitude;


    public ZipCode(int pZip) {
        zipCode   = pZip;
        city      = "UNKOWN";
        state     = "ST";
        latitude  = 0.0;
        longitude = 0.0;
    }

    public ZipCode (int pZip, String pCity, String pState, double pLat, double pLon) {
        zipCode   = pZip;
        city      = pCity;
        state     = pState;
        latitude  = pLat;
        longitude = pLon;

    }

    public void setZipCode(int zipCode){
        this.zipCode = zipCode;
    }

    public void setCity (String city){
        this.city = city;
    }

    public void setState (String state){
        this.state = state;
    }

    public void setLatitude (double latitude){
        this.latitude = latitude;
    }

    public void setLongitude (double longitude){
        this.longitude = longitude;
    }

    public int getZipCode (){
        return zipCode;
    }

    public String getCity (){
        return city;
    }

    public String getState(){
        return state;
    }

    public double getLatitude(){
        return latitude;
    }

    public double getLongitude(){
        return longitude;
    }

    public String toString(){
        return city + ", " + state + zipCode;
}
}

我真的只需要知道如何使 findZip 方法 return 与 int zip 相同的 ZipCode。

这最终将从具有如下格式地址的 file.txt 中提取: 94594, MerryVille, WA, 经度, 纬度

在您的 if 语句中,您试图将 int 与 ZipCode 进行比较。您的方法声明应该改为

public ZipCode findZip(ZipCode zip){
  for (int i = 0; i <= myZips.size() - 1; i++)
  if (zip == myZips.get(i)) 
    return myZips.get(i);
  else
    return "null";

然后您当然需要将 ZipCode 传递给您的方法,而不是 int

而不是

if (zip = myZips.get(i))

你应该使用

if (zip == myZips.get(i))

在你的条件中使用==。

此外,不需要在 null 周围加双引号。

最后,'return null' 需要在您的 for 循环之外。否则,在第一次不匹配时,它将 return 为空。您希望在 returning null 之前等待整个循环(所有 zips)被比较。在比赛中,您可以 return 马上。

两件事:

1) 下面的比较(如果你想比较)是错误的

 if (zip = myZips.get(i)) 

正确的方法应该是

 if (zip == myZips.get(i)) 

2) 为什么要从 for 循环中 returning?您不应该处理整个数组列表,然后以适当的方式 return 处理值

3) Return 您的函数类型是 ZipCode,不确定 "null" 将如何为您工作。

用围绕 null 的引号擦除错误,将 if 更改为比较,并将 else 移到 for 之外会给我们这个。

public ZipCode findZip (int zip) {
    for (int i = 0; i <= myZips.size() - 1; i++) {
        if (zip == myZips.get(i)) {
            return myZips.get(i);
        }
    }

    return null;
}

不过,还是不行我来猜一猜。原因是现在 intZipCode 比较。

我猜你想要这样的东西。

List<ZipCode> myZips = // create all ZipCode's somehow

public ZipCode findZip(int zip){

    //look at all zips
    for(ZipCode zipCode : myZips){

        //if we find one that matches the one we want, return it
        if(zipCode.getZipCode() == zip){
            return zipCode;
        }
    }

    // we checked all our zip's and couldn't find this one
    return null;
}