Spezielles Problem
lima-city → Forum → Programmiersprachen → Java
bedingung
buchstabe
code
ende
endlosschleife
geduld
gelten
leertaste
position
problem
projekt
rand
schleife
schwer schildern
string
system
widerspruch
wort
zeichen
zweck
-
So, hi!
Ich habe wieder ein Problem mit meinem Code. Folgendes ist eine Funktion, welche beim Ändern der Position des "Caret", also des Striches in einem JTextField, der einem die Position anzeigt, aufgerufen wird.
Sie soll ein Wort aus einem beliebig großen Text herausfiltern, welches den "Caret" berührt. Das Merkmal für ein Wort sei mal, dass entweder ein Leerzeichen, oder das Ende der Zeile, mehrere Buchstaben voneinander abgrenzt. Hierbei wird jetzt die 1. While- Schleife scheinbar problemlos durchlaufen, jedoch ist bei der 2. ein Problem, das sich schwer schildern lässt, am Besten, ihr erstellt diese Funktione einmal selbst und lasst sie durchlaufen (Vorsicht: Endlosschleife!). Dazu braucht ihr ein Textfeld namens "code", ein Integer namens "position" und einen String namens "zeichen". Nicht wundern, wenn ich den String "zeichen" für 2 Zwecke missbrauche .
Die Frage: Was muss ich hier verändern, um das gewünschte Ziel zu erreichen?
position = code.getCaretPosition(); int zaehler = 0; int schleife = 1; try { zeichen = code.getText(position, 1); } catch (BadLocationException ex) { zeichen = " "; System.out.println("Fehler 1 " + zeichen); } while ((!zeichen.equals(" ") || !zeichen.isEmpty()) && schleife == 1) { try { zeichen = code.getText(position, 1); if (zeichen.equals(" ") || zeichen.isEmpty()) { position++; schleife = 2; } else { position--; } } catch (BadLocationException ex) { System.out.println("Rand 1 " + zeichen); position++; schleife = 1; } } while ((!zeichen.endsWith(" ") || !zeichen.endsWith("\n")) && schleife == 2) { try { zeichen = zeichen + code.getText(position, 1); position++; zaehler++; } catch (BadLocationException ex) { System.out.println("Rand 2 " + zeichen); } } while (zeichen.endsWith(" ") || zeichen.endsWith("\n")) { schleife = 0; zeichen = zeichen.substring(0, zaehler); } System.out.println("Ende: " + zeichen);
Beitrag zuletzt geändert: 23.4.2009 20:07:50 von toolz -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hi,
damit die 2. Schleife verlassen wird muss gelten:
(!zeichen.endsWith(" ") || !zeichen.endsWith("\n")) = falsch
Das bedeutet aber es muß gelten:
!zeichen.endsWith(" ") = !zeichen.endsWith("\n") = falsch
Das wiederum bedutet aber:
zeichen.endsWith(" ") = zeichen.endsWith("\n") = wahr.
Siehst du den Widerspruch?
Die Bedingung wird nie wahr und deshalb kann die Schleife nicht verlassen werden.
Um ehrlich zu sein befürchte ich aber bei deinem Code liegt noch einiges im Argen ;).
Dennoch viel Spass mit deinem Projekt und viel Geduld!
Gruss
Manni
-
bandi999 schrieb:
Hi,
damit die 2. Schleife verlassen wird muss gelten:
(!zeichen.endsWith(" ") || !zeichen.endsWith("\n")) = falsch
Das bedeutet aber es muß gelten:
!zeichen.endsWith(" ") = !zeichen.endsWith("\n") = falsch
Das wiederum bedutet aber:
zeichen.endsWith(" ") = zeichen.endsWith("\n") = wahr.
Siehst du den Widerspruch?
Die Bedingung wird nie wahr und deshalb kann die Schleife nicht verlassen werden.
Um ehrlich zu sein befürchte ich aber bei deinem Code liegt noch einiges im Argen ;).
Dennoch viel Spass mit deinem Projekt und viel Geduld!
Gruss
Manni
uhm, diesen widerspruch könnte man doch durch !(zeichen.endsWith(" ") == zeichen.endsWith("\n")) aufheben dann würde zumindest die bedingung erfüllt werden bzw. die ist wahr, wenn es weder eine leertaste, noch ein zeilenumbruch ist... sonst halt falsch -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage