Tôi có một số lớp được thiết kế để mô phỏng danh mục sách. Tôi có một lớp sách (isbn, tiêu đề, vv ...), một lớp BookNode, một BookCatalog mà là một LinkedList của sách và một lớp trình điều khiển (gui). Vấn đề của tôi là tôi có phương thức toString() trong BookCatalog, nghĩa vụ trả về một biểu diễn String của tất cả các sách. Lớp Book cũng ghi đè toString(). Tôi phải có từng lĩnh vực của cuốn sách được phân cách bởi một "tab" và mỗi cuốn sách được phân tách bằng một "dòng mới". Khi tôi cố gắng sử dụng PrintStream để in danh mục sách sang tệp .txt, \ n không đăng ký.cách chèn ký tự dòng mới trong chuỗi vào PrintStream rồi sử dụng máy quét để đọc lại tệp
Tôi đã cố gắng thay đổi nó thành System.getProperty (line.separator) hiển thị sách chính xác. Nhưng bây giờ, tôi có một vấn đề mà Scanner sẽ không đọc tập tin một cách chính xác và ném một "NoSuchElementException". Làm thế nào để tôi nhận được máy quét đến 1) Bỏ qua line.separator hoặc 2) có sử dụng printStream \ n không?
Book.java
public String toString(){
return isbn+"\t"+lastName+"\t"+firstName+"\t"+title+"\t"+year+"\t"+
String.format("%.2f",price);
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;
}
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();
String firstName = input.next();
String title = input.next();
while (input.hasNext() && !input.hasNextInt()){//while next token is not an integer
title += " "+input.next();
}
int year = input.nextInt();
double price = input.nextDouble();
Book book = Book.createBook(isbn, lastName, firstName, title, year, price);
if (book!=null){
catalog.add(book);
}
}
Nếu bạn tuyên bố rằng 'PrintStream' chặn' \ r' bạn bị nhầm lẫn. Phần còn lại của câu hỏi của bạn không rõ ràng. – EJP
Tôi đã sử dụng System.getProperty ("line.separator") thay vì \ n vì vậy khi tôi mở tệp mới được tạo (từ PrintStream) và cố gắng đọc lại nó (máy quét), nó sẽ không xử lý dòng. Tôi giả định rằng "line.separator" là lý do tại sao vì vậy tôi đã cố gắng để lưu các nhân vật trong một biến để bỏ qua nó, nhưng điều đó đã không làm việc hoặc. – Sara