Ho diverse classi progettate per la simulazione di un catalogo di libri. Ho una classe di libri (isbn, titolo, ecc.), Una classe BookNode, un BookCatalog che è una lista Linked di libri e una classe di driver (gui). Il mio problema è che ho un metodo toString() in BookCatalog che dovrebbe restituire una rappresentazione String di tutti i libri. Anche la classe Book sovrascrive toString(). Dovrei avere ogni campo del libro separato da una "scheda" e ogni libro separato da una "nuova riga". Quando provo a usare PrintStream per stampare il catalogo libri in un file .txt, il \ n non si registra.come inserire un nuovo carattere di linea in una stringa su PrintStream, quindi utilizzare uno scanner per rileggere il file
Ho provato a cambiarlo in System.getProperty (line.separator) che visualizza correttamente il bookcatalog. Ma ora ho un problema in cui lo scanner non legge correttamente il file e lancia una "noSuchElementException". Come ottengo lo scanner 1) Ignora il line.separator o 2) usa printStream \ n?
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);
}
}
Se stai sostenendo che 'PrintStream' sopprime il' \ r' ti stai sbagliando. Il resto della tua domanda non è chiaro. – EJP
Ho usato System.getProperty ("line.separator") invece di \ n così quando apro il file appena creato (da PrintStream) e ho provato a rileggerlo (scanner), non elaborerà la linea. Suppongo che il "line.separator" sia la ragione per cui così ho provato a salvare il personaggio in un'altra variabile per aggirarlo ma non ha funzionato. – Sara