Вопрос

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

Я использую свой основной класс для чтения TXT, который за исключением линии IP -адреса и хочу сохранить их в объект и сохранить в массиве.
Я проверяю свой код и получил ошибку времени выполнения. 140.118.175.208 Longtitude 121.524994 Latitude 25.0392 Исключение в потоке "Main" java.lang.nullpointerexception и я добавляю s [1] system.out.println ("londitude" + s [1] .getlongtitude ()); Это показывает мне ту же проблему и не печатайте значение [1], я не знаю, что случилось? Думаю, я назначил массив obj? Спасибо!

Это было полезно?

Решение

Проблема в линии:

Site S[]= new Site[100];  

Для каждой итерации вы создаете новый массив, поэтому в конце он заполнен только нулевыми указателями. Когда вы попытаетесь получить доступ к S [0], это даст вам нулевой указатель на второй итерации.

Вот почему он впервые печатает, но во второй раз вы получите нулевый указатель. В первый раз у S [0] имеет значение, во второй раз, когда нет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top