Frage

   public class CountryLookupTest {

                public static void main(String[] args) {
                String location1=null;
                try {
                int number=0;
                LookupService citylookup = newLookupService("D://GeoLiteCity.dat",
                            LookupService.GEOIP_MEMORY_CACHE );
                FileReader fr =new FileReader("d:\\IP.txt");
                BufferedReader br = new BufferedReader(fr);
                String line;
                while( (line = br.readLine()) != null ){
                    location1=line;
                    System.out.println(location1);
                Location record = citylookup.getLocation(location1);                        
                Site S[]= new Site[100];            
                S[number]= new Site(record.longitude,record.latitude);
                number++;
                            System.out.println("longtitude " + S[0].getLongtitude());  
                System.out.println("latitude " + S[0].getLatitude());
                            }
    public class Site { 
        private float longitude;
        private float latitude;

            public Site(float a, float b){
            setLongitude(a);
            setLatitude(b);
            }
    }

Ich verwende meine Hauptklasse, um TXT zu lesen, die die IP -Adresszeile für Zeile speichern und sie in Objekt speichern und in Array speichern.
Ich teste meinen Code und habe Laufzeitfehler erhalten. 140.118.175.208 Longtitude 121.524994 Latitude 25.0392 Ausnahme in Thread "Haupt" java.lang.nullPointerexception und ich füge s [1] System hinzu. Es zeigt mir das gleiche Problem und drucke S [1] Wert nicht. Ich weiß nicht, was passiert ist? Ich glaube, ich hatte Array Obj zugewiesen? Danke!

War es hilfreich?

Lösung

Das Problem liegt in der Linie:

Site S[]= new Site[100];  

Für jede Iteration erstellen Sie ein neues Array. Am Ende ist es also nur mit Nullzeiger gefüllt. Wenn Sie versuchen, auf die S [0] zuzugreifen, erhalten Sie bei der zweiten Iteration einen Nullzeiger.

Deshalb druckt es zuerst, aber beim zweiten Mal erhalten Sie einen Nullzeiger. Zum ersten Mal hat das S [0] einen Wert, das zweite Mal nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top