Question

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

J'utilise ma classe principale pour lire TXT qui enregistre la ligne d'adresse IP par ligne et je souhaite les enregistrer dans l'objet et enregistrer dans le tableau.
Je teste mon code et j'ai eu une erreur d'exécution. 140.118.175.208 Longtitude 121.524994 Latitude 25.0392 Exception dans le thread "Main" java.lang.nullpointerException et j'ajoute s [1] System.out.println ("longtitude" + s [1] .getLongTtitude ()); Cela me montre le même problème et n'imprime pas la valeur [1] Je ne sais pas ce qui s'est passé? Je pense que j'avais attribué le tableau obj? Merci!

Était-ce utile?

La solution

Le problème est dans la ligne:

Site S[]= new Site[100];  

Pour chaque itération, vous créez un nouveau tableau, donc à la fin, il n'est rempli que de pointeurs nuls. Lorsque vous essayez d'accéder au S [0], cela vous donnera un pointeur nul sur la deuxième itération.

C'est pourquoi il imprime d'abord, mais la deuxième fois que vous obtenez un pointeur nul. La première fois que le S [0] a une valeur, la deuxième fois ce n'est pas le cas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top