我的循环布尔值没有编译

时间:2015-11-11 22:35:12

标签: java loops boolean incompatibletypeerror

我需要这个方法来浏览我的ArrayList myZip,找出是否有一个与int zip匹配的整数,然后去找到等于intZip的ZipCode;如果没有匹配则返回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;
}

有什么想法吗?

这是ZipCode类:

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方法返回与int zip相同的ZipCode。

这最终会从file.txt中获取,其地址格式如下: 94594,MerryVille,WA,Longitude,Latitude

7 个答案:

答案 0 :(得分:2)

在您的条件下使用==。

此外,不需要围绕null的双引号。

最后,'return null'需要在for循环之外。否则,在第一个不匹配时,它将返回null。您希望在返回null之前等待整个循环(所有拉链)进行比较。在比赛中,您可以立即返回。

答案 1 :(得分:1)

而不是

if (zip = myZips.get(i))

你应该使用

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

答案 2 :(得分:1)

我猜你想要这样的东西。

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;
}

答案 3 :(得分:0)

使用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比较。

答案 4 :(得分:-1)

在你的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

答案 5 :(得分:-1)

一些事情:

1)低于比较(如果你想要比较)是错误的

 if (zip = myZips.get(i)) 

正确的方法应该是

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

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

3)你的函数的返回类型是ZipCode,不知道&#34; null&#34;会为你效劳。

答案 6 :(得分:-1)

我假设您将ArrayList定义为Integer类型:

ArrayList<Integer> myZip = new ArrayList<Integer>();

如果我的假设正确,您可以尝试下面的代码吗?

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

我只更改了&#34;的内部&#34;循环和&#34;如果&#34;语句。