我需要这个方法来浏览我的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
答案 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;
}
然而,仍然没有做到这一点我会猜测。原因是现在int
到ZipCode
比较。
答案 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;语句。