Pergunta

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

Eu uso minha classe principal para ler o TXT que salvará a linha de endereço IP por linha e deseja salvá -los no objeto e salvar na matriz.
Eu testo meu código e recebi um erro de tempo de execução. 140.118.175.208 Longtitude 121.524994 Latitude 25.0392 Exceção no tópico "main" java.lang.nullPointerException e eu adiciono s [1] System.out.println ("longtitude" + s [1] .GetLongTititude ()); Isso me mostra o mesmo problema e não imprime o valor que não sei o que aconteceu? Eu acho que havia atribuído o obj de matriz? Obrigado!

Foi útil?

Solução

O problema está na linha:

Site S[]= new Site[100];  

Para cada iteração, você cria uma nova matriz; portanto, no final, ela está cheia apenas de indicadores nulos. Quando você tenta acessar os s [0], ele lhe dará um ponteiro nulo na segunda iteração.

É por isso que ele é impressa primeiro, mas na segunda vez que você recebe um ponteiro nulo. Primeira vez que o S [0] tem um valor, a segunda vez que não.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top