如何将链表打印到文件中

时间:2017-03-19 17:49:59

标签: java linked-list fileoutputstream

每个链接列表都有ISBN,作者姓名,预订日期,书价以及我试图将整本图书目录(x多本书)保存为文件。他们说

有错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 21
at BookCatalog.SaveFile(BookCatalog.java:34)
at BookCatalogClient.menu(BookCatalogClient.java:167)
at BookCatalogClient.main(BookCatalogClient.java:25)

其中java:167 = for(Book newBook:g.SaveFile())

以下是代码:

来自第1课:

PrintStream out = new PrintStream(new FileOutputStream("books.txt"));
for(Book newBook: g.SaveFile()){
out.println(newBook.getBookISBN()+"\t"+newBook.getLastName()+"\t"
+newBook.getFirstName()+"\t"+newBook.getTitle()+"\t"+newBook.getYearOfPublication()+"\t"+newBook.getPrice());

}

来自第2课:

count是一个全局变量,用于保存目录中的书籍数量。

public Book[] SaveFile(){

   Book cursor = head;
   Book[] bookCount = new Book[count-1];
   int i = 0;
   while(cursor!=null){
       Book out = cursor;
       cursor = cursor.getNext();
       bookCount[i] = out;
       i++;

   }
   return bookCount;

}

3 个答案:

答案 0 :(得分:1)

您的代码不完整我无法弄清楚代码中的 cursor = cursor.getNext(); bookCount[i] = out; 。什么

Book[] bookCount = new Book[count-1]; 

游标如何变为null,最终你的while循环无限运行。请检查
你必须小心

ArrayList<Book>

这里数组的大小也在扮演角色检查

尝试将book []更改为Book[] bookCount = new Book[count-1]; i,更改声明

ArrayList<Book> bookCount = new ArrayList<Book>();

bookCount[i]=cursor  并将代码bookCount.add(cursor)更改为 Book[] bookCount = new Book[count];

并尝试

否则改变

{{1}}

并检查

答案 1 :(得分:0)

线程中的异常&#34; main&#34; java.lang.ArrayIndexOutOfBoundsException:21

如果您超出阵列范围,则仅显示此例外。 所以对于while循环,你想做类似的事情

=

这有意义吗?

答案 2 :(得分:0)

count中的class2变量存在问题。你是如何初始化它的?异常即将发生,因为您的数组大小为20,并且您在索引Book处插入21