kostenloser Webspace werbefrei: lima-city


Spezielles Problem

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    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 :wink:.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. schattenmagier

    schattenmagier hat kostenlosen Webspace.

    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 :-o dann würde zumindest die bedingung erfüllt werden :-o bzw. die ist wahr, wenn es weder eine leertaste, noch ein zeilenumbruch ist... sonst halt falsch :-o
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!