我正在嘗試編寫一個處理位置的類,如00501 Holtsville NY 40.922326 -72.637078, 00544 Holtsville NY 40.922326 -72.637078
。在Java中實現類比
我已經能夠找出除了可比較部分之外的所有東西。我試圖修改提供的方法,以便它將返回基於該地點的城市名稱的比較。
public class PostalCodes implements Comparable {
private String city;
private double latitude;
private double longitude;
private String zip;
private String state;
public PostalCodes(String aZip, String aCity, String aState, double aLatitude, double aLongitude)
{
city = aCity;
latitude = aLatitude;
longitude = aLongitude;
zip = aZip;
state = aState;
}
void setZip(String aZip)
{
zip=aZip;
}
void setState(String aState)
{
state=aState;
}
void setLocation(String aCity)
{
city = aCity.trim();
}
void setLatitude(double lat)
{
latitude = lat;
}
void setLongitude(double long1)
{
longitude = long1;
}
public String getState()
{
return state;
}
public String getZip()
{
return zip;
}
public String getLocation()
{
return city;
}
public double getLatitude()
{
return latitude;
}
public double getLongitude()
{
return longitude;
}
public String toString()
{
String result = String.format("%s %s,%s (%1.3f; %1.3f)",zip, city, state, latitude,longitude);
return result;
}
@Override
public int compareTo(Object arg0) {
// Confused
return 0;
}
}
難道是像
public int compareTo (Object arg0){
if (arg0>city)
return True;
任何及所有的幫助深表感謝。請保持簡單,這是我第一次嘗試實現可比較的事情。
編輯:
當我嘗試如下圖所示,在我的主要排序的數組....
公共類HMWK {
public static void main(String[] args) throws IOException {
URL url = new URL("http://noynaert.net/zipcodes.txt");
Scanner input=new Scanner (url.openStream());
int counter =0;
final int MAX_SIZE=50000;
PostalCodes[] codesArray= new PostalCodes[50000];
while (input.hasNextLine() && counter < MAX_SIZE)
{
String line=input.nextLine();
String[] tokens;
tokens = line.split("\t");
if (tokens.length != 5)
{
continue;
}
String zip=tokens[0];
String city=tokens[1];
String state=tokens[2];
double lat=Double.parseDouble(tokens[3]);
double longy=Double.parseDouble(tokens[4]);
PostalCodes code=new PostalCodes(zip,city,state,lat,longy);
codesArray[counter]= code;
counter++;
}
Arrays.sort(codesArray);
for (int i =0;i<counter; i+=1000)
{
System.out.println(codesArray[i].toString());
}
}
} 我得到的錯誤
Exception in thread "main" java.lang.NullPointerException
at PostalCodes.compareTo(PostalCodes.java:69)
at PostalCodes.compareTo(PostalCodes.java:1)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at Hmwk.main(Hmwk.java:37)
上帝的綠色地球上發生了什麼?
空校驗PLS 'public int compareTo(PostalCodes other){return other == null? 1:city.compareTo(other.getLocation()); }' – huocp
對於空檢查在技術上是正確的,但這是特定實現 - 如果'city'保證永遠不爲null,那麼就沒有必要。那,並且在這裏早些時候沒有空檢查,突出顯示那個假設可能是無效的地方。 – Makoto
真棒真我欣賞它 – user102817