wie fügen Sie eine neue Zeile Zeichen in einer Zeichenfolge zu PrintStream dann mit einem scanner in neu-Lesen der Datei

Ich habe mehrere Klassen zur simulation ein Buch-Katalog. Ich habe eine Klasse book (isbn, Titel, etc...), ein BookNode Klasse, ein BookCatalog das ist eine LinkedList von Büchern und eine Treiber-Klasse (gui).
Mein problem ist, dass ich eine toString () - Methode in BookCatalog, die soll einen String zurückgeben Vertretung aller Bücher. Die Book-Klasse überschreibt auch toString(). Soll ich jedes Feld von dem Buch getrennt durch ein "tab" und jedes Buch getrennt durch ein "new line". Wenn ich versuche, PrintStream, das Buch zu drucken Katalog ein .txt-Datei, die \n nicht registriert.

Ich habe versucht, es zu ändern auf "System".getProperty(Zeile.separator) zeigt die bookcatalog richtig. Aber jetzt habe ich ein problem, wo der Scanner nicht gelesen werden die Datei korrekt und wirft ein "NoSuchElementException". Wie bekomme ich den scanner 1) Ignorieren Sie die Zeile.separator oder 2) haben printStream verwenden \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);
        }
    }
Wenn Sie behaupten, dass PrintStream unterdrückt die \r irren Sie sich. Der Rest deiner Frage ist nicht klar.
Ich benutzte das System.getProperty("line.separator") statt \n also, wenn ich öffnen Sie die neu erstellte Datei (von PrintStream) und versucht, erneut zu Lesen (Prüfprogramm), wird es nicht verarbeiten die Linie. Ich gehe davon aus, dass die "Linie.separator" ist der Grund, warum so versuchte ich zu retten, den Charakter in eine andere variable zu umgehen, aber das hat nicht funktioniert entweder.

InformationsquelleAutor Sara | 2013-03-19

Schreibe einen Kommentar