Collections Text-Dateien auf Gleichheit überprüfen

R

Rose Asbenhe

Gast
Hey zusammen!

Auch ich hab von der Uni mal wieder ne neue tolle Aufgabe bekommen und probier und lösch seit 3 Stunden unzählige Ideen ;)

Grob zusammengefasst geht es darum, dass ich als Kommandozeilenargumente zwei Dateien überreiche (ist ja weiter kein Problem). Die eine Datei ist so ein Miniwörterbuch und die andere Datei einfach eine Text-Datei. Ausgedruckt werden sollen alle Wörter aus der Text-Datei, die nicht im Wörterbuch vorkommen.

sooo und jetzt kommt meine supertolle Frage:
wie wandel ich die Text-Dateien in Strings um? Oder muss ich das überhaupt nicht tun? Bei einer anderen Aufgabe vor ein paar Wochen mussten wir Bilddateien bearbeiten. Da war es irgendwas mit Streams.. aber.. keine Ahnung, ob das da auch geht.

Vielen lieben Dank schonmal!
 

XHelp

Top Contributor
Google sollte doch bei "java read text file" genügen fertige Lösungen liefern.
Zuerst solltest du das Wörterbuch einlesen und eine Wortliste erstellen. Dannach Text einlesen, nach Wörtern splitten und prüfen.
 
R

Rose Asbenhe

Gast
Haja, also danke erstmal - bei BufferedReader hat's erstmal geklingelt und googlen hat auch viel gebracht. Wollte das jetzt schön runterschreiben und dann stolz berichten, dass es geklappt hat. Aber inzwischen sehe ich wortwörtlich nur noch rot ;)

An sich hat es relativ schnell geklappt, die Dateien zu lesen. Nur bei split ging's nicht mehr.

ach ich zeig mal schnell was ich habe:

Java:
    try{
        FileInputStream text = new FileInputStream(args[0]);
        DataInputStream data = new DataInputStream(text);
        BufferedReader buffer = new BufferedReader(new InputStreamReader(data));
        String[] ausgabe;
        while ((ausgabe= = buffer.readLine().split(".")) != null)   {
        	
          System.out.println (ausgabe);
        }
        data.close();
        }catch (Exception e){
          System.err.println(e);
        }
      }
}

(ja das Datazeugs ist aus dem Internet geklaut, aber irgendwo muss ich das Zeug zum rumprobieren ja herbekommen :) )
zum Splitten hatte ich erst:

Java:
        String[] ausgabe = buffer.readLine().split(".");
        while (ausgabe != null)

war natürlich nix :(

(ich hatte noch einige, einige andere Versuche, seit euren Antworten bin ich am Testen - aber ich poste aus Platzgründen lieber nur einen)
 

XHelp

Top Contributor
Geht ein Schritt zurück und lass dir die Datei einfach Zeilenweise ausgeben. Die jetztige while-Bedingung macht kein Sinn
 

Rose Asbenhe

Mitglied
zeilenweise auslesen *google*

okay, danke! ist die while-schleife überhaupt angebracht? oder lieber eine for? ach, ne, dann müsste ich ja vorher wissen, wie lang der Text ist oder?
 

Rose Asbenhe

Mitglied
man.. ist das alles frustrierend :(

ich habe jetzt immerhin schonmal das überflüssige zeugs rausbekommen und bin mittlerweile hier:
Java:
	  public static void main (String[] args) {
		  
		   String[] zeile;			   
		   for (int i=0; i < args.length; i++) {		 
		     
		     try {
		       BufferedReader buffer = new BufferedReader(new FileReader(args[i]));
		       while ((zeile = buffer.readLine().split("\\s")) != null) {
		         System.out.println(zeile);
		       }  
		     }
		     catch (IOException e) {
			      e.printStackTrace();
		     }
		  } 		  
		}

(weil ich ja zwei Dateien eingeben soll - keine Ahnung ob das so Sinn ergibt, gleich beide auf einmal zu machen, wenn ich sie dann vergleichen soll)
wie ihr sehen könnt, hänge ich weiterhin am splitten. Ohne das lässt sich der Text wunderschön ausdrucken, nur mit bekomm ich eine Liste, wie:
[Ljava.lang.String;@3e25a5
[Ljava.lang.String;@19821f
[Ljava.lang.String;@addbf1
[Ljava.lang.String;@42e816
[Ljava.lang.String;@9304b1
Exception in thread "main" java.lang.NullPointerException
at SpellChecker.main(SpellChecker.java:28)

funktioniert das denn überhaupt so? Ich will mir die Dateien ja eigtl. gar nicht anschauen, sondern im Endeffekt dann nur vergleichen.
--

eine Kommilitonen, die es schon hat, meinte, sie hätte es mit RandomAccessFile gemacht und funktioniert wunderbar.

Danke danke an jeden kleinen Tipp ! :)
 

XHelp

Top Contributor
Der Tipp bleibt: mach fürs erste NUR eine Schleife, die dir den Inhalt Zeilenweise anzeigt. Ohne Split oder sonstiges
 

Rose Asbenhe

Mitglied
Java:
	  public static void main (String[] args) {		 
		     
		     try {
		       BufferedReader buffer = new BufferedReader(new FileReader(args[0]));
		       String zeile;
		       while ((zeile = buffer.readLine()) != null) {
		         System.out.println(zeile);
		       }  
		     }
		     catch (IOException e) {
			      e.printStackTrace();

so druckts mir den Text schon schön aus, jetzt ein neues String-Array, mit dem ich "zeile" bei Leerzeichen trenne?
 

Rose Asbenhe

Mitglied
Naiverweise wollte ich jetzt

String[] aufgeteilt = zeile.split("\\.");

schreiben. Ich probier's lieber gar nicht erst, oder? :D

brauch ich irgendwas mit Pattern ? Oder/und noch andere Schleifen?
 

Rose Asbenhe

Mitglied
Java:
		     try {
		       BufferedReader buffer = new BufferedReader(new FileReader(args[1]));
		       String textzeile;
		       while ((textzeile = buffer.readLine()) != null) {
		    	   Pattern p1 = Pattern.compile("\\s");
		    	   String[] s1 = p1.split(textzeile);
		    	   for (int i = 0; i < s1.length; i++)
		    	   {
		    	       System.out.println(s1[i]);
		    	   }
		    	           
		       }  
		     }
		     catch (IOException e) {
			      e.printStackTrace();
		     }
		  }

es geht, es geht, es geht, es geeeeeeeeeeeeeeeeeeeeeht :) :)
Aber wie sage ich dem Ding nu, dass er bei Punkten, Kommas und einfach allen sonstigem Zeug, auch noch splittet? habe es mit Pattern p1 = Pattern.compile("\\s\\w"); probiert, aber das mag er nicht so.

(Und wenn wir gerade schon dabei sind. Jeder einzelne Großbuchstabe soll noch verkleinert werden. nur, damit ihr Bescheid wisst ;))
 

Rose Asbenhe

Mitglied
Java:
		     try {
			       BufferedReader buffer = new BufferedReader(new FileReader(args[0]));
			       String testzeile;
			       while ((testzeile = buffer.readLine()) != null) {
			    	   testzeile = testzeile.replaceAll("\\p{Punct}", "");
			    	   testzeile = testzeile.toLowerCase();
			    	System.out.println(testzeile);}  
			     
		       BufferedReader buffer1 = new BufferedReader(new FileReader(args[1]));
		       String textzeile;
		       while ((textzeile = buffer1.readLine()) != null) {
		    	   textzeile = textzeile.replaceAll("\\p{Punct}", "");
		    	   textzeile = textzeile.toLowerCase();
		    	   Pattern p1 = Pattern.compile("\\s");
		    	   String[] s1 = p1.split(textzeile);
		    	   for (int i = 0; i < s1.length; i++)System.out.println(s1[i]);		    	   		    	    
		       }  
		     }
		     catch (IOException e) {
			      e.printStackTrace();
		     }
		  }

es wird ja :) ich wurde allerdings gerade darauf hingewiesen, dass die Wörter ja wieder ausgespuckt werden sollen. Also die, die in der vorgegeben Wörterbuch-Datei nicht drinnen stehen. Und wenn in der Text-Datei Wörter groß geschrieben sind, dann sollen die auch groß wieder rauskommen. Habe ich das jetzt schon mit toLowerCase() zerstört?

(danke danke danke, alleine wäre ich nie so weit gekommen !)
 

XHelp

Top Contributor
was soll denn
Code:
\\p{Punct}
sein? oO
Ja, mit toLowerCase hast du es zerstört.
Aber du hast mal wieder 1000 Schritte übersprungen. Zunächst solltest du die Wörter genünftig splitten. Dann solltest du dir ne Liste von Wörtern, z.B. ArrayList<String> anlegen und die Wörter aus dem Wörterbuch da eintragen.
 

Rose Asbenhe

Mitglied
\\p{Punct} steht in unserem Skript - sind alle Punktzeichen, funktioniert einwandfrei =D

immernoch nicht richtig gesplittet ? oh man :( bis jetzt habe ich bei einer Textdatei mit dem Inhalt .. ääh..

Hallo, das soll jetzt die Textdatei darstellen. Ist sie nicht schön?

die Ausgabe:
hallo
das
soll
jetzt
.
.
.
schön

---

aber ich finde die ArrayListe gerade spannender :)
brauch ich hier nu irgendwas Generisches?

Liste erstellen ist klar,
ArrayList<String> array = new ArrayList<String>();
(ja ich bin bei der Namensgebung das Variablen immer sehr kreativ .. :D)

dann eine for-Schleife mit (a b:c) (also irgendwas) und eine array.add-Methode ?
 

XHelp

Top Contributor
Du hast doch schon eine Schleife, warum willst du eine neue?
Jetzt musst du die Wörter nicht auf die Konsole ausgeben, sondern in diese Liste speichern (am besten alles kleingeschrieben).

Und erst dann kannst du anfangen mit der 2. Datei zu arbeiten. Die Schritte verkürze ich mal:
Code:
- 2. Datei zeilenweise einlesen
- splitten
- für jedes Wort in der Zeile
- - wenn es nicht in deiner Wörterbuchliste existiert, dann ausgeben
 

Rose Asbenhe

Mitglied
achso ja stimmt. Ich glaub... ich geh erstmal schlafen ;) Und morgen früh nach dem Aufstehen geht's dann topmotiviert (...) weiter ;)

Also ich rühr mich ganz bestimmt wieder, spätestens mit einem Freudentanz, wenn es funktioniert :)

Gute Naaacht
 

Rose Asbenhe

Mitglied
Soo.. ich war mal wieder ziemlich fleißig heute und habs nochmal komplett von vorne angefangen. Mittlerweile bin ich hier angekommen:

Java:
mport java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;


public class SpellChecker{
	
	static ArrayList<String> textdatei = new ArrayList<String>();	
	
	public static void main(String[] args){
		
		try{
			ArrayList<String> woerterbuch = new ArrayList<String>();
			BufferedReader buffer = new BufferedReader(new FileReader(args[0]));
			String zeile = null;
			while ((zeile = buffer.readLine()) != null) {
				woerterbuch.add(zeile.toLowerCase());
		}
			buffer.close();
								
			BufferedReader buffer1 = new BufferedReader(new FileReader(args[1]));
			while((zeile = buffer1.readLine())!=null){
				if(zeile != null){
					String[] fehlendeWoerter = zeile.replaceAll("\\p{Punct}"," ").split("\\s");
					for(String input:fehlendeWoerter){
						System.out.println("Diese Wörter werden gerade überprüft: " + input);
						try{
							Integer.parseInt(input);
						}catch(NumberFormatException e){
							if(!woerterbuch.contains(input.toLowerCase())){
								textdatei.add(input);
							}
						}
					}
				}
			}
			buffer1.close();
		
			
			
		}
		catch(IOException e){
			e.printStackTrace();
		}
		System.out.println("Diese Wörter haben sich herauskristallisiert: " + textdatei.toString());
	}
}

Die Ausgabe funktioniert noch nicht gaaanz so richtig, fällt euch was auf?
Danke :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
T Classpath Problem mit dem auslesen von Text-Dateien (Pfad) Java Basics - Anfänger-Themen 3
N Java Programm zum Suchen und Ersetzen von Text Dateien Java Basics - Anfänger-Themen 10
L Input/Output Text Dateien einlesen, bearbeiten und speichern Java Basics - Anfänger-Themen 9
N Lesen aus (Text)Dateien Java Basics - Anfänger-Themen 7
K 2 Text-Dateien vergleichen Java Basics - Anfänger-Themen 11
C Problem mit Lesen und Speichern und Verarbeiten von großen Text Dateien Java Basics - Anfänger-Themen 5
D text dateien mit RandomAccessFile manipulieren Java Basics - Anfänger-Themen 6
G Dateien erstellen / Text in Dateien schreiben Java Basics - Anfänger-Themen 8
C Text Dateien aus einem Ordner auslesen? Java Basics - Anfänger-Themen 3
S Große Text dateien einbinden Java Basics - Anfänger-Themen 3
G Text aus verschiedenen Dateien in JTextArea laden Java Basics - Anfänger-Themen 3
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
A Edit Text Negative Decimalzahlen Java Basics - Anfänger-Themen 18
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
R Text in der DB abspeichern, und danach bearbeiten Java Basics - Anfänger-Themen 5
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
JavaBeginner22 Button Text verändern Java Basics - Anfänger-Themen 1
GoenntHack Java Text von JLabel verändert sich nicht Java Basics - Anfänger-Themen 1
A Text zu Morsecode Java Basics - Anfänger-Themen 8
O Java Text Area Zeilenausgabe Java Basics - Anfänger-Themen 7
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
M Text in Datei schreiben Java Basics - Anfänger-Themen 9
T208 Text Datei individuell benennen. Java Basics - Anfänger-Themen 5
A Werten aus dem Text ausliesten Java Basics - Anfänger-Themen 6
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
O Text mit Regex trennen und wieder zusammenbauen Java Basics - Anfänger-Themen 5
xFlozen Text mehrspaltig ausgeben Java Basics - Anfänger-Themen 3
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
K Rekursiver Vergleich von Textmuster und Text Java Basics - Anfänger-Themen 2
C Variablen Provided text for message may not be null Java Basics - Anfänger-Themen 9
H Klassen Die Länge einer Text-Node bestimmen Java Basics - Anfänger-Themen 2
F Erste Schritte java.util.Scanner: Beliebig langen Text per Paste in Console eingeben ? Java Basics - Anfänger-Themen 14
GermanPie Discord Text Channel erstellen? Java Basics - Anfänger-Themen 1
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
J Java TextArea Text bei hinzufügen makieren Java Basics - Anfänger-Themen 1
T Text-Ausgabe für Textadventure - Organisation Java Basics - Anfänger-Themen 5
G Anklickbaren Text erzeugen Java Basics - Anfänger-Themen 2
B Text-Datei nur in Stream speichern und dann ausgeben Java Basics - Anfänger-Themen 3
M Java: BufferedReader liest nur die Hälfte der Text-Datei. Java Basics - Anfänger-Themen 4
M Apache POI PPT - Vertikales Alignment von Text im XSLFAutoShape Java Basics - Anfänger-Themen 2
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
P Taschenrechner Text übertragung Java Basics - Anfänger-Themen 3
J java.text.DecimalFormat Java Basics - Anfänger-Themen 5
AnnaBauer21 GridBagLayout JLabel weightx: Unterschiedliche Breite mit & ohne Text Java Basics - Anfänger-Themen 6
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
S Text-To-Speech mit Java Java Basics - Anfänger-Themen 2
L Text-Adventure Java Basics - Anfänger-Themen 3
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
ruutaiokwu Ausgegebene Zeile ersetzen mit neuem Text Java Basics - Anfänger-Themen 3
tsom Erste Schritte itext Text als Block auf neue Seite Java Basics - Anfänger-Themen 0
Dimax Programme ,als Text in MySql speichern Java Basics - Anfänger-Themen 7
Harlequin Compiler-Fehler Text Adventure - "Long Output" Fehler Java Basics - Anfänger-Themen 3
S Zeichen zählen kopierter Text Java Basics - Anfänger-Themen 6
D Text als Code in java-forum.com formatieren. Wie ? Java Basics - Anfänger-Themen 3
F Schreibprogramm nur markierten Text in kursiv oder fett schreiben Java Basics - Anfänger-Themen 3
A Rechnen mit Text und Zahl Java Basics - Anfänger-Themen 4
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
M Erste Schritte Verschlüsselung von text Java Basics - Anfänger-Themen 21
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
S Java Text splitten mit Tabs, Zeilen, Zeichen und Klammern. Java Basics - Anfänger-Themen 6
M Beliebigen Text in *** umwandeln Java Basics - Anfänger-Themen 15
K (JTable) Text einer Zelle auf der linken Seite kürzel Java Basics - Anfänger-Themen 2
H Suche in Text und Markierung Java Basics - Anfänger-Themen 14
H Suche in einem Text Java Basics - Anfänger-Themen 17
F Input/Output Text einlesen lassen Java Basics - Anfänger-Themen 14
L Text eingeben und im Textfeld auslesen lassen Java Basics - Anfänger-Themen 2
R Best Practice Palindrom in einem Text finden Java Basics - Anfänger-Themen 18
J Text Datei einlesen Java Basics - Anfänger-Themen 6
L Text und Ganzzahl in einer Dialogbox Java Basics - Anfänger-Themen 5
D Text Adventure Erstellen Java Basics - Anfänger-Themen 10
T Jlabel durch Text in 2 anderen Jlabels sichtbar machen Java Basics - Anfänger-Themen 4
J JTextArea visible ohne Text Java Basics - Anfänger-Themen 3
D Bild zu Text Java Basics - Anfänger-Themen 4
L Text/Befehle zu Programmen senden Java Basics - Anfänger-Themen 1
L Java Text datei nur bis zu einem Punkt auslesen? Java Basics - Anfänger-Themen 3
S Erste Schritte Sprachermittler - Datei öffnen, Text in TextArea, Bereinigen, Auswerten Java Basics - Anfänger-Themen 14
S Java Label hat komischen text Java Basics - Anfänger-Themen 4
F Text anhand bestimmter Trennzeichen in Textteile trennen (netbeans) Java Basics - Anfänger-Themen 7
S Ausgabe von Text Formatieren Java Basics - Anfänger-Themen 6
H Text in einen Button quetschen Java Basics - Anfänger-Themen 3
A Text mit "Scanner" eingeben und Umlaute ersetzen Java Basics - Anfänger-Themen 7
A Text teilen und Wörter zählen Java Basics - Anfänger-Themen 7
J Zahlen als Text übersetzen Java Basics - Anfänger-Themen 6
F Erste Schritte Label Text vor Methodenaufruf setzen Java Basics - Anfänger-Themen 17
R Text Pane Aktualisierung erst nach JOptionPane Java Basics - Anfänger-Themen 10
I BufferedReader Text-Datei einlesen??? Java Basics - Anfänger-Themen 1
S Wort in Text suchen und ersetzen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
M Input/Output Text auf Fenster zeichen Java Basics - Anfänger-Themen 2
W Klassen Fehler bei public void setLabelText(JLabel label, String text) Java Basics - Anfänger-Themen 11
Chava Testprojekt.Text.Image.Button Java Basics - Anfänger-Themen 4
Z JSlider - Text wird nich angezeigt Java Basics - Anfänger-Themen 0
A Problem mit set.Text und übergabe Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben