Pregunta

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

Utilizo mi clase principal para leer TXT que guarda la dirección IP de línea por línea y quiero guardarlos en el objeto y guardar en la matriz.
Pruebo mi código y recibí un error de tiempo de ejecución. 140.118.175.208 Longtitude 121.524994 Latitud 25.0392 Excepción en el hilo "principal" java.lang.nullpointerexception y agrego s [1] system.out.println ("longtitude" + s [1] .getLongtitude ()); Me muestra el mismo problema y no imprime el valor de S [1] ¿No sé qué pasó? Creo que había asignado matriz obj? ¡Gracias!

¿Fue útil?

Solución

El problema está en la línea:

Site S[]= new Site[100];  

Para cada iteración, crea una nueva matriz, por lo que al final solo está lleno de punteros nulos. Cuando intentes acceder al S [0] te dará un puntero nulo en la segunda iteración.

Es por eso que se imprime por primera vez, pero la segunda vez que obtienes un puntero nulo. La primera vez que el S [0] tiene un valor, la segunda vez no lo hace.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top