ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
271
271
EMPFEHLEN
-
09.11.11 19:28 #1
Hallo liebe Tutorials JavaCommunity,
ich bin gerade dabei ein Programm zu schreiben, welches in einem eingegebenen Text nach Wörtern sucht.
Dabei wird, wenn ein Wort in dem Text gefunden wird, dieses herausgelöscht. Ist der Text dann noch länger als vorgegebene Länge, wird der Filter genau noch einmal (also rekursiv) mit dem bearbeiteten Text aufgerufen.
Die Vergleichswörter werden aus einer Liste ausgelesen.
Das Problem ist, dass das Programm ab einem bestimmten Punkt die bearbeiteten Text nicht mehr kürzt, sondern irgendwie aneinander hängt.
Hier mal der gesamte Code
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
import java.io.*; import java.io.RandomAccessFile; import java.util.*; public class rekurs2 { static int restlänge = 12; static String [] checkl = new String [1500000]; static int wtc = 50; //Wörter in der Wortliste static int ebtief = 0; public static void main(String[] args) { String lösungtxt; wortliste(); lösungtxt = "derbaueristvielleichtschlauabernichtunbedingtdennerweißnichtalle"; minimizer(lösungtxt); } private static void wortliste() { String tchange; // Einlese Variable //*****************Einlesen der Wortliste in ein Array********************** try { FileReader fr2 = new FileReader("Top.txt"); BufferedReader br2 = new BufferedReader(fr2); for (int o =0 ; o <= wtc ; o++ ) { tchange = br2.readLine(); checkl[o] = tchange.toLowerCase(); } br2.close(); } catch ( IOException e ) {e.printStackTrace();} } private static void minimizer (String text){ int endstel = 0; int stelle = 0; String bearb = text; String ausgabe = ""; String wort = ""; for (int z = 0; z < wtc; z++){ wort = checkl[z]; // Definition des zu suchenden Wortes if (bearb.contains(wort.toLowerCase())) { stelle = bearb.indexOf(wort.toLowerCase()); // Anfangsstelle des Wortes im Text feststellen endstel = stelle + wort.length(); // Endstelle des Wortes im Text feststellen //Ausgabe bis zum Anfang des Wortes for (int i = 0; i < stelle;i++) { ausgabe = ausgabe + bearb.charAt(i); } //Ausgabe nach dem Wort bis Ende des Textes for (int i = endstel; i < bearb.length();i++) { ausgabe = ausgabe + bearb.charAt(i); } if (ausgabe.length() > restlänge) { minimizer(ausgabe); }else { System.out.println(bearb+ " @ " + z); } } } } }
Eine (oder mehrere) Antworten wären super Ich steh grad ziemlich auf dem Schlauch
Grüße flynshotDas Leben besteht aus If-Anweisungen und ein bisschen Mathematik
-
10.11.11 07:57 #2
Hi,
Möglichkeit 1:
Du kannst dir mithilfe von 'string.subString(int start, int end)' den Text vor dem Wort und nach dem Wort geben lassen. Dann brauchst du nicht die chars selber aneinander hängen.
Möglichkeit 2:
Wenn du das Ergebnis aber auch ohne Rekursion lösen darfst, würde ich dir die Methode 'string.replaceFirst(String regex, String replacement)' dann kannst du einfach nach deinem Wort x mal suchen und durch einen Leerstring ersetzen.
Gruß
FabioBitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
Ähnliche Themen
-
Wortfilter
Von Online-Skater im Forum PHPAntworten: 9Letzter Beitrag: 08.09.11, 18:52 -
Ein etwas anderer Wortfilter in HTML
Von FP4Lisa im Forum PHPAntworten: 3Letzter Beitrag: 12.04.10, 16:36 -
Rekursionsproblem
Von Oetzicool im Forum PHPAntworten: 4Letzter Beitrag: 25.01.10, 01:13 -
Wortfilter
Von jürgen-schulz im Forum PHPAntworten: 14Letzter Beitrag: 03.09.09, 07:38 -
Wortfilter
Von Sebastian Wramba im Forum PHPAntworten: 5Letzter Beitrag: 28.04.02, 15:07





Zitieren
Login





