我有几个专门用于模拟图书目录的课程.我有一个书类(isbn,title等),一个BookNode类,一个BookCatalog,它是一个书籍链接列表和一个驱动程序类(gui).我的问题是我在BookCatalog中有一个toString()方法,该方法应该返回所有书籍的String表示.Book类也重写toString().我应该让书的每个字段用"标签"分隔,每本书用"新行"分隔.当我尝试使用PrintStream将图书目录打印到.txt文件时,\n不会注册.
我试图将其更改为System.getProperty(line.separator),它正确显示bookcatalog.但是现在,我遇到一个问题,即Scanner无法正确读取文件并抛出"NoSuchElementException".如何使扫描仪1)忽略line.separator或2)让printStream使用\n?
Book.java
public String toString(){
return isbn+"\t"+lastName+"\t"+firstName+"\t"+title+"\t"+year+"\t"+
String.format("%.2f",price);
Run Code Online (Sandbox Code Playgroud)
BookCatalog.java
public String toString() {
BookNode current = front;
String s="";
System.out.println(s);
while (current!=null){
//each book is listed on separate line
s+=current.getData().toString()+"\n ";//System.getProperty("line.separator")
current = current.getNext();
}
return s;
}
Run Code Online (Sandbox Code Playgroud)
Driver.java
public void loadDirectory() throws FileNotFoundException {
if (f.exists()){
Scanner input = new Scanner(f);
while (input.hasNextLine()){
String bookLine = input.nextLine();
processBookLine(bookLine);
}
}
}
public void processBookLine(String line){
Scanner input = new Scanner(line);
String isbn = input.next();
String lastName = input.next(); …Run Code Online (Sandbox Code Playgroud)