StackOverFlow - 例外?我找不到原因:-(

时间:2016-01-21 23:10:23

标签: object stream

我要编写一个可以保存姓名和生日日期的程序。关闭程序后,数据不应丢失。如果您打开该程序,则可以向相应的用户添加其他用户。不幸的是,我总是得到一个stackoverflow - 例外,我没有发现错误。

 <pre> package geburtstagstool;

import java.io.*;

public class GeburtstagsTool
{
    public static void main (String[]args) throws Exception
    {
        Eintrag eintrag = new Eintrag ("Miller","000000"); 
    }
}

class Eintrag implements Serializable
{
    Eintrag [] eintrag = new Eintrag [50];
    public String name;
    public String gebDatum;
    int i=0;

    public Eintrag (String name, String gebDatum)
    {
        eintrag[i] = new Eintrag (name,gebDatum);
        ++i;
    }         

    public void testSchreiben () throws Exception
    {
        ObjectOutputStream oos = new ObjectOutputStream (new      FileOutputStream ("eintrag.dat"));
        oos.writeObject(eintrag);
        oos.close();
    }

    public static Eintrag testLesen() throws IOException,     ClassNotFoundException
    {
         ObjectInputStream ois = new ObjectInputStream (new     FileInputStream ("eintrag.dat"));
        Eintrag eint = (Eintrag) ois.readObject();
        ois.close();
        return eint; 
    }
}
<code>

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

你的问题在这里

 public Eintrag (String name, String gebDatum)
    {
        eintrag[i] = new Eintrag (name,gebDatum);
        ++i;
    }         

这是一个无限循环。这是一个没有结束的递归调用。 你调用自己调用它的构造函数..所以它会这样做,直到整个堆栈都满了..然后你得到SF异常:)

答案 1 :(得分:0)

这是一个完全有效的解决方案。这应该让你开始。祝你好运。

GeburtstagsTool类:

$_POST['checkboxitems']

Eintrag课程:

public class GeburtstagsTool {

List<Eintrag> eintragList;

public static void main (String[] args) throws IOException, ClassNotFoundException
{
    GeburtstagsTool geburtstagsTool = new GeburtstagsTool();
    geburtstagsTool.loadEintrag();

    System.out.println("What's already in the list: \n" + geburtstagsTool.eintragList);

    Eintrag eintrag = new Eintrag("Peyton Manning", "03/24/1976");

    geburtstagsTool.eintragList.add(eintrag);
    geburtstagsTool.writeEintrag();

}

public void loadEintrag() {}
{
    ObjectInputStream ois = null;
    try
    {
        ois = new ObjectInputStream(new FileInputStream("eintrag.dat"));
        eintragList = (List<Eintrag>) ois.readObject();
    }
    catch (IOException e)
    {
        System.out.println("File doesn't exist");
        eintragList = new ArrayList<>();
    }
    catch (ClassNotFoundException e)
    {
        e.printStackTrace();
    }
}

public void writeEintrag() throws IOException
{
    ObjectOutputStream oos = null;
    try
    {
        oos = new ObjectOutputStream(new FileOutputStream("eintrag.dat"));
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
    oos.writeObject(eintragList);
    oos.close();
}