txt Einlesen und Verarbeiten

reak

Mitglied
Hallo, ich bin leider ein totaler Java Anfänger und komme im Moment nicht weiter.

Zu meiner Aufgabe:
- ich soll eine txt Einlesen. Die einzelnen Sätze aus der Datei soll ich in umgekehrter Reihenfolge ausgeben. (Sprich z.B. Ursprung Zeile 1:"Erster Satz. Zweiter Satz." zu " Satz Erster Satz Zweiter".)
Ich hab das jetzt über eine Doppelte For Schleife versucht. Mit dem ersten Durchlauf möchte ich erreichen das nur bis zum Punkt eingelesen wird und anschließend durch Schleife 2 dieser Teil rückwärts ausgegeben wird.
Mir gelingt bisher nur die Ausgabe ohne zweite Schleife zur Trennung der Punkte. Als Ausgabe bekomme ich dann die Zeile von hinten nach vorne ( .. Satz Zweiter Satz Erster). Ich muss aber Satzweise die Reihenfolge der Wörter verändern.

Java:
import java.util.Scanner;
import java.io.IOException;

public class Einlesen {
    public static void main(String[] args) {
    try {
        DateiInput leser= new DateiInput("...testLesen.txt");
        String zeile = null;
        while ((zeile = leser.leseZeile()) != null)
        {
            String [] satz =zeile.split("\\.");
            String [] leer =zeile.split(" ");
            for (int index = 0; index < satz.length; index++)
            {
                for(int t = leer.length-1; t >= 0; t--) {
                    IO.print(leer[t]+" ");
            }
            }
            IO.println("");
        leser.schliesseDatei();
        } catch (IOException e) {
        IO.println("Fehler beim Lesen der Datei! " + e.getLocalizedMessage());
        System.exit(1);
    }
}
}
Bin ich mit meiner Idee auf dem richtigen Weg oder sollte ich eher versuchen das ganze über eine Array Liste zu Lösen?
Es soll auch noch die Anzahl der der Sätze pro Absatz bestimmt werden aber hier habe ich dann ja das Problem, dass ich durch das .split("\\.") gar keine Punkte mehr habe.
Zusätzlich soll ich noch die Anzahl der Absätze (leeren) Zeilen in der Txt Datei zählen, dazu fällt mir leider bisher gar nichts ein.

Für Hilfe wäre ich sehr dankbar.
 

mihe7

Top Contributor
Die Idee ist nicht falsch. Allerdings teilst Du die ganze Zeile auf Wörter auf. Du möchtest aber nur den jeweiligen Satz auf Wörter aufteilen.
 

reak

Mitglied
Datei Input ist eine Vorgegeben Klasse zum Einlesen von Dateien. Darin ist dann auch leseZeile enthalten
Code:
    public String leseZeile () throws FileNotFoundException, IOException
    {
        String zeile = null;
        zeile = reader.readLine ();

        return zeile;
    }
 

MoxxiManagarm

Top Contributor
Eine Wichtige Frage wäre für mich noch folgendes:

Ist es sichergestellt/gegeben, dass eine Zeile immer vollständige Sätze enthält?
Ich meine ist dieser Fall ausgeschlossen?

Code:
Hallo reak. Die Java Forum Gemeinde
hilft dir gerne. Stelle deine Frage.

Könnte je nach Implementierung könnte dies nämlich leicht als 4 Sätze gezählt werden, obwohl es nur 3 sind.
 

reak

Mitglied
Hallo, danke für die Antworten.

Nein der Fall es nicht ausgeschlossen. Es kann sein das ein langer Satz sich auch in die zweite Zeile zieht.
Danke für die Anmerkung
 

httpdigest

Top Contributor
Die einzelnen Sätze aus der Datei soll ich in umgekehrter Reihenfolge ausgeben. (Sprich z.B. Ursprung Zeile 1:"Erster Satz. Zweiter Satz." zu " Satz Erster Satz Zweiter".)
Brauchst du denn überhaupt das Erkennen und Einteilen in Sätze? Anscheinend gibst du ja nicht die Sätze in umgekehrter Reihenfolge aus, sondern die Wörter (wie in deinem obigen Beispiel). Also brauchst du doch nur die Wörter.
 

MoxxiManagarm

Top Contributor
Doch er braucht die Sätze, weil jeder Satz in sich rückwärts ausgegeben wird.

Außerdem nicht definiert:
- Andere Satzendzeichen ? !
- Nebensätze ,
 

reak

Mitglied
Die Reihenfolge der Sätze soll nicht verändert werden.
Wenn ich die Sätze nicht unterteile gebe ich doch direkt die ganze Zeile Rückwärts aus. Das heißt ich würde z.B. beim zweiten Satz anfangen.
 

MoxxiManagarm

Top Contributor
Einfach um das Ganze Handling von Satzzeichen und Zeilenumbrüchen zu vermeiden würde ich folgendes tun:

Lies die Datei zeilenweise ein. Dabei fügst du dir temporär die einzelnen Zeilen mit \n zusammen. Die Variable kann Absatz heißen, du behältst also den Absatz im Speicher. Sobald du auf eine Leerzeile (oder Ende der Datei) triffst, verarbeitest du den Absatz. Für das Parsen von Sätzen/Wörtern besitzt Java übrigens eine Klasse. Sie nennt sich BreakIterator.
https://docs.oracle.com/javase/7/docs/api/java/text/BreakIterator.html
Du kannst also eine SentenceInstance erzeugen und dieser Instanz den Absatz geben. Dann iterierst du wie im Link angegeben. Für jeden einzelnen Satz kannst du dann noch eine WordInstance von BreakIterator erzeugen. Der Link stellt auch eine Möglichkeit vor die Iteration rückwärts durchzuführen.
 

MoxxiManagarm

Top Contributor
Hab's gerade auch mal ausprobiert. Mir war nicht bewusst, dass die Satzzeichen mitkommen. Aber die kann man ganz bestimmt noch rausfiltern, falls gewollt ;-) Aber vielleicht ist es ja auch ein Feature.

Java:
package javaforum.org.example;

import java.text.BreakIterator;
import java.util.Locale;

public class Beispiel {
   
    public static String[] zeilen = {
        "Das ist für Reak. Ich bin ein Text mit einem",
        "Zeilenumbruch. Ich habe nur drei Sätze.",
        "",
        "Und nach der Leerzeile kommt ein Absatz!",
        "",
        "Aber man denke an andere Fälle: Was ist mit einem Nebensatz, den",
        "ich hier mit eingebaut habe?",
        "Und eine Frage war auch gleich mit dabei."
    };
           
    public static void main(String[] args) {
        String zeile = "";
        String absatz = "";
       
        BreakIterator satzIterator = BreakIterator.getSentenceInstance(Locale.GERMANY);
        BreakIterator wortIterator = BreakIterator.getWordInstance(Locale.GERMANY);
       
        for(int i = 0; i <= zeilen.length; i++) {           
            if((i == zeilen.length) || (zeile = zeilen[i]).isEmpty()) { // Verarbeite Absatz
                int satzZaehler = 0;
                satzIterator.setText(absatz);
             
                int startSatz = satzIterator.first();
                for (int endSatz = satzIterator.next(); endSatz != BreakIterator.DONE; startSatz = endSatz, endSatz = satzIterator.next()) {
                    satzZaehler++;
                    String satz = absatz.substring(startSatz, endSatz);
                   
                    wortIterator.setText(satz);
                   
                    int endWort = wortIterator.last();
                    for (int startWort = wortIterator.previous(); startWort != BreakIterator.DONE; endWort = startWort, startWort = wortIterator.previous()) {
                        System.out.print(satz.substring(startWort, endWort));
                    }
                   
                    System.out.println();
                }
               
                System.out.println("\nAnzahl Sätze im letzten Absatz: " + satzZaehler + "\n");
               
                absatz = "";
                satzZaehler = 0;
            } else { // erweitere Absatz
                absatz += " " + zeile;
            }
        }
    }
}

Code:
 .Reak für ist Das 
 .Zeilenumbruch einem mit Text ein bin Ich
.Sätze drei nur habe Ich

Anzahl Sätze im letzten Absatz: 3

!Absatz ein kommt Leerzeile der nach Und 

Anzahl Sätze im letzten Absatz: 1

 ?habe eingebaut mit hier ich den ,Nebensatz einem mit ist Was :Fälle andere an denke man Aber 
.dabei mit gleich auch war Frage eine Und

Anzahl Sätze im letzten Absatz: 2
 

reak

Mitglied
Okay Vielen Dank :)
Da muss ich mich erstmal reinlesen, das ist mir komplett neu für mich. Mal gucken ob sich das dann so Umsätzen lässt
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
Z Textdateien einlesen und verarbeiten Java Basics - Anfänger-Themen 3
V Excel Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 4
J CSV Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 10
H Daten einlesen und verarbeiten Java Basics - Anfänger-Themen 4
D CSV Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 23
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
S SeriellenPort einlesen Java Basics - Anfänger-Themen 3
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
S JSON einlesen und benutzen Java Basics - Anfänger-Themen 5
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Einlesen > new Leser Java Basics - Anfänger-Themen 5
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
S CSV einlesen und mit Komma trennen Java Basics - Anfänger-Themen 12
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
L Datein einlesen Java Basics - Anfänger-Themen 1
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
M Einzelzeichen einlesen Java Basics - Anfänger-Themen 2
C (char) Array einlesen Java Basics - Anfänger-Themen 8
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
E Einteilung der Räume mit einlesen einer .txt datei Java Basics - Anfänger-Themen 16
P Array einlesen von Konsole Java Basics - Anfänger-Themen 8
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
R Compiler-Fehler Einlesen von Konsolenparameter funtioniert nichtmehr Java Basics - Anfänger-Themen 4
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
H Einlesen Java Basics - Anfänger-Themen 8
H Einlesen von Zahlen Java Basics - Anfänger-Themen 20
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
K Sonderzeichen einlesen Java Basics - Anfänger-Themen 3
L Input/Output XML Datei einlesen (JAXB?) Java Basics - Anfänger-Themen 10
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
I Datei einlesen Java Basics - Anfänger-Themen 11
J Best Practice [Code Verbesserung] TXT einlesen und in Arrayliste speichern Java Basics - Anfänger-Themen 5
A Ungeordnetes Array ordnen, Zahl einlesen und einordnen Java Basics - Anfänger-Themen 23
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
T Input/Output Einlesen eines .txt Files nur bei gesetztem Breakpoint möglich Java Basics - Anfänger-Themen 1
L RSA Public Key einlesen Java Basics - Anfänger-Themen 0
K Datei aus unbekannten Speicherorten einlesen Java Basics - Anfänger-Themen 1
T Datei in Array einlesen "null" Java Basics - Anfänger-Themen 8
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
M Einlesen von Integerwertern aus einer CSV Java Basics - Anfänger-Themen 8
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
K String einlesen und als Variable speichern Java Basics - Anfänger-Themen 8
K .txt einlesen und in ein Array packen Java Basics - Anfänger-Themen 2
M Erste Schritte Zahlen einlesen und auswerten Java Basics - Anfänger-Themen 6
N Best Practice CSV einlesen - Variables Array?! Java Basics - Anfänger-Themen 8
O Klassen Objektnamen für Methodenaufrauf einlesen lassen Java Basics - Anfänger-Themen 2
D Array Werte einlesen und ausgeben? Java Basics - Anfänger-Themen 8
C Java Scanner einlesen von txt Dokument InputMismatch Java Basics - Anfänger-Themen 9
V Hilfe zum Thema einlesen eines Datums Java Basics - Anfänger-Themen 5
E Erste Schritte txt.Datei mit BufferedReader einlesen und in 2D-Array abspeichern Java Basics - Anfänger-Themen 15
S Werte in Array einlesen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben