我的循环布尔值没有编译
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;
}
不过,还是不行我来猜一猜。原因是现在 int
与 ZipCode
比较。
我猜你想要这样的东西。
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;
}
我需要这个方法来遍历我的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;
}
不过,还是不行我来猜一猜。原因是现在 int
与 ZipCode
比较。
我猜你想要这样的东西。
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;
}