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>

感谢您的帮助。

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

Geburtstags工具类:

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

英特拉格类:

public class Eintrag implements Serializable{
String name;
String gebDatum;
public Eintrag(String name, String gebDatum) {
    this.name = name;
    this.gebDatum = gebDatum;
}
@Override
public String toString()
{
    return "Eintrag{" +
            "name='" + name + ''' +
            ", gebDatum='" + gebDatum + ''' +
            '}';
}

你的问题就在这里

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

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

相关内容

  • 没有找到相关文章

最新更新