2015-10-31 2 views
0

У меня проблемы. Мне интересно, как исправить это около 2 часов, и я до сих пор ничего не знаю. Вы можете помочь мне, ребята? Я написал этот код еще раз, но он ничего не меняет, до сих пор не знаю, где я ошибся.NullPointerException во время getSize

public class Historia { 
public ArrayList<String> tablica; 

public void odczyt() throws IOException, ClassNotFoundException { 
    ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("skarbonka.bin")); 
    tablica = (ArrayList<String>) objectInputStream.readObject(); 
    objectInputStream.close(); 
    int size = tablica.size(); 
    for(int i = 0; i<size; i++){ 
     System.out.println(tablica.get(i)); 
    } 

} 

Там же второй класс:

public class Zapis { 
private GregorianCalendar gregorianCalendar = new GregorianCalendar(); 
private Scanner scanner = new Scanner(System.in); 
private Historia dodaj = new Historia(); 

public void plik() throws IOException { 
    Dane dane = new Dane(); 
    ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("skarbonka.bin")); 
    ArrayList<String> arrayList = new ArrayList<String>(); 
    dane.kwota = scanner.nextInt(); 
    dane.dzien = String.format("%tc", gregorianCalendar); 
    int g = dodaj.tablica.size(); 
    for(int i=0; i<g; i++){ 
     arrayList.add(""); 
     arrayList.set(i, dodaj.tablica.get(i)); 
    } 

    arrayList.add(dane.toString()); 
    objectOutputStream.writeObject(arrayList); 
    objectOutputStream.close(); 
} 

}

There's the error

Любые идеи? Спасибо за помощь!

ответ

0

Ваш

public ArrayList<String> tablica; 

никогда не инициализируется, таким образом нуль при вызове

int g = dodaj.tablica.size(); 

Измените объявление в

private List<String> tablica = new ArrayList<String>(); 

Также обратите внимание, что, как правило, желательно, чтобы закодировать против интерфейсов, поэтому предпочитайте List как type вместо ArrayList.

Кроме того, сделайте своих членов закрытыми с помощью геттеров/сеттеров.

Как правило, ваш код не имеет для меня большого смысла, было бы интересно, что вы намерены делать?

+0

Это должно быть что-то вроде копилки, которая показывает статус моей учетной записи и день, когда изменилось. Спасибо за вашу помощь, но теперь я заметил следующий пробел. Мой ввод показывает только последнюю запись. Зачем? Я думал, что (int i = 0; i

0

Вы должны инициализировать ArrayList!

ArrayList<Object> list =new ArrayList<Object>(); 
+0

Спасибо, помощник! но теперь я заметил следующий пробел. Мой ввод показывает только последнюю запись. Зачем? Я думал (int i = 0; i

Смежные вопросы