簡體   English   中英

getSize期間發生NullPointerException

[英]NullPointerException during getSize

我有麻煩了。 我想知道如何解決約2個小時,但我仍然一無所知。 你能幫我嗎? 我再次編寫了此代碼,但是它什么都沒有改變,仍然不知道我在哪里弄錯了。

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

}

有錯誤

有任何想法嗎? 感謝幫助!

你的

public ArrayList<String> tablica;

永遠不會初始化,因此在您調用時為null

int g = dodaj.tablica.size();

將聲明更改為

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

還要注意,通常建議針對接口進行編碼,因此更喜歡使用List作為類型而不是ArrayList。

此外,使您的成員與獲取者/設置者私密。

通常,您的代碼對我而言意義不大,您打算做什么會很有趣?

您應該初始化ArrayList!

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM