Textdatei mit beliebig vielen Zeilenumbrüchen erstellen

JDimi

Neues Mitglied
Hallo,

leider konnte ich zu meinen Problem nichts finden und hoffe daher das mir nun hier Erleuchtung gebracht werden kann.

Ich will ein Programm schreiben welches Es ermöglicht eine Textdatei zu erstellen und man soll die Möglichkeit haben beliebig oft Zeilenumbrüche erstellen zu können und weiterschreiben zu können.
Code:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Text_Datei_mit_Zeilenumbruch_19_10_17 {

    private static final String FILENAME = "C:\\Test\\test3.txt";

    public static void main(String[] args) {

        try (BufferedWriter bw = new BufferedWriter(new FileWriter(FILENAME))) {
            Scanner scan1 = new Scanner(System.in);
            String content = "";
            String newcontent = "";
            boolean wiederholen = true;
            int w = 1;
            System.out.println("Schreiben Sie was in der Textdatei stehen soll.");
            content = scan1.nextLine();
            bw.write(content);
            while (wiederholen == true) {
                System.out.println("Weiterschreiben mit Zeilenumbruch? 1 = Ja");
                w = scan1.nextInt();
                if (w != 1) {
                    wiederholen = false;
                    break;
                }
                else {
                System.out.println("Schreiben Sie was in der nächsten Zeile stehen soll");
                newcontent = scan1.nextLine();
                bw.write("\r\n");
                bw.write(newcontent);
                }
               
            }
           
            System.out.println("Textdatei wurde erfolgreich erstellt!");
        }
        catch (IOException e) {
            e.printStackTrace();
        }

    }

}

Das ist der Code den ich geschrieben habe.
Eigentlich logisch solange ich immer mit 1 Bestätige sollte ich in der Lage sein einen neuen Text in die nächste Zeile (Zeilenumbruch) schreiben zu können, bis ich irgendwas anderes außer 1 sage und die endlosschleife beendet wird.

Jedoch ist es jetzt so das wenn ich ihn nun 1 sage und eine neue Zeile schreiben will das dieser Schritt mehr oder weniger übersprungen wird und ich wieder am anfang meiner while Schleife bin.
QjoNRch.jpg

Hat jemand eine Idee woran es scheitern könnte?

Liebe Grüße
JDimi
 
Wenn du eine 3 eingibst und Enter drückst wird zstl. noch ein Zeilenumbruch mit eingelesen. Dieser wird durch die nextInt Methode aber nicht beachtet und deshalb in den Buffer geschoben. Wenn du das nächste mal nextLine() aufrufst wird erst geschaut ob im Buffer was drin ist (und ggf. geleert) und danach erst auf deine Eingabe reagiert. Da jedesmal dein Zeilenumbruch im Buffer liegt wird es nie zu einer Eingabe kommen.
Abhilfe schafft das erneute aufrufen von nextLine() nach deinem nextInt().

Java:
int x = scan.nextInt();
scan.nextLine(); // clear Buffer

String s = scan.nextLine(); // -> Input
 
Wenn du eine 3 eingibst und Enter drückst wird zstl. noch ein Zeilenumbruch mit eingelesen. Dieser wird durch die nextInt Methode aber nicht beachtet und deshalb in den Buffer geschoben. Wenn du das nächste mal nextLine() aufrufst wird erst geschaut ob im Buffer was drin ist (und ggf. geleert) und danach erst auf deine Eingabe reagiert. Da jedesmal dein Zeilenumbruch im Buffer liegt wird es nie zu einer Eingabe kommen.
Abhilfe schafft das erneute aufrufen von nextLine() nach deinem nextInt().

Java:
int x = scan.nextInt();
scan.nextLine(); // clear Buffer

String s = scan.nextLine(); // -> Input

Wow Super vielen Dank für die Aufklärung.
Jetzt läuft das Programm so wie ich es will =)
 

Neue Themen


Zurück
Oben