如何将链表打印到文件中
How to print a linked list into a file
每个链接列表都有一个 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)
which java:167 = for(Book newBook: g.SaveFile())
代码如下:
来自 class 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());
}
来自 class 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;
}
线程异常 "main" java.lang.ArrayIndexOutOfBoundsException: 21
此异常仅在您超出数组范围时显示。
所以对于 while 循环你想做这样的事情
while (cursor < counter)//Or something
......
这有意义吗?
class2
中的 count
变量有问题。你是如何初始化它的?出现异常是因为您的数组大小为 20,并且您要在索引 21
处插入 Book
您的代码不完整我无法弄清楚您的代码中的 head
是什么。什么
cursor = cursor.getNext();
bookCount[i] = out;
游标如何最终变成 null 你的 while 循环是 运行 无限。请检查
你必须小心
Book[] bookCount = new Book[count-1];
这里数组的大小也起到了检查的作用
尝试将 book[] 更改为 ArrayList<Book>
i,e change declaration
Book[] bookCount = new Book[count-1];
到ArrayList<Book> bookCount = new ArrayList<Book>();
并将代码 bookCount[i]=cursor
更改为 bookCount.add(cursor)
并尝试
否则改变
Book[] bookCount = new Book[count];
并检查
每个链接列表都有一个 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)
which java:167 = for(Book newBook: g.SaveFile())
代码如下:
来自 class 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());
}
来自 class 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;
}
线程异常 "main" java.lang.ArrayIndexOutOfBoundsException: 21
此异常仅在您超出数组范围时显示。 所以对于 while 循环你想做这样的事情
while (cursor < counter)//Or something
......
这有意义吗?
class2
中的 count
变量有问题。你是如何初始化它的?出现异常是因为您的数组大小为 20,并且您要在索引 21
Book
您的代码不完整我无法弄清楚您的代码中的 head
是什么。什么
cursor = cursor.getNext();
bookCount[i] = out;
游标如何最终变成 null 你的 while 循环是 运行 无限。请检查
你必须小心
Book[] bookCount = new Book[count-1];
这里数组的大小也起到了检查的作用
尝试将 book[] 更改为 ArrayList<Book>
i,e change declaration
Book[] bookCount = new Book[count-1];
到ArrayList<Book> bookCount = new ArrayList<Book>();
并将代码 bookCount[i]=cursor
更改为 bookCount.add(cursor)
并尝试
否则改变
Book[] bookCount = new Book[count];
并检查