Falsche Auswertung der if-Abfrage

Status
Nicht offen für weitere Antworten.

hugo

Bekanntes Mitglied
Hallo...

ich habe ein Problem bei der Auswertung der if-Abfrage!

Code:
while (max > 0)
         {
           Zeichen = GpsDatenEingang.read();
           if ((Zeichen != '\n' && Zeichen != '\r') && (Zeichen >= 0))
           {
             DatenSatz = DatenSatz.append((char)Zeichen);
           }
           else
           {
             if(Zeichen == '\n')
             {
                String Daten = DatenSatz.toString();
                // Macht annähernd das gleiche, wie der Sun-StringTokenizer und gibt bei next Token einen String zurück
                OwnStringTokenizer Token = new OwnStringTokenizer(Daten, ',');
                // mit nextToken() wird das erste Element des Tokens ausgelesen
                Def = Token.nextToken();
                // Ausdruck zur Überprüfung des String
                String regex = "GPGLL";
                /* Wenn in Def "$GPGLL" steht, soll er true zurückgeben und den ganzen String einem Vektor
                 * hinzufügen.
                 */
                if(Def.indexOf(regex) > 0);
                {
                  Positionen.addElement(Daten);
                  System.out.println(Def);
                }
                DatenSatz = new StringBuffer();
                max--;
             }
           }
         }
Ich lasse mir nun Def ausgeben um zu prüfen, ob die If-Anweisung auch ordentlich auswertet. Interessanterweise entspricht Def nicht regex.
 

Bleiglanz

Gesperrter Benutzer
da sind mehrere ifs, kannst du dich nicht genauer ausdrücken?

String regex = "GPGLL";
/* Wenn in Def "$GPGLL" steht, soll er true zurückgeben und den ganzen String einem Vektor
* hinzufügen.
*/
mit oder ohne $, was soll das sein?

Was liefert
GpsDatenEingang.read();
ein char? warum castet du dann nochmal

Interessanterweise entspricht Def nicht regex.
sehr interessant, und das heisst?

deinem "regex" entsprechen heisst, die Kette "GPGLL" enthalten?
 

hugo

Bekanntes Mitglied
Es geht um diese if-Anweisung.
Code:
  if(Def.indexOf(regex) > 0);
                {
                  Positionen.addElement(Daten);
                  System.out.println(Def);
                }
Dass Dollarzeichen ist in der Zeichenkette immer vorhanden, man hätte als regex also auch nehmen können: "$GPGLL". Das ist eine Zeichenkette(bzw. ein Teil davon) von einem GPS-Empfänger. Deshalb steht auch in der if-Bedingung ">0" weil es das erste Zeichen ja nicht sein kann.

Was liefert
Zitat:

GpsDatenEingang.read();

ein char? warum castet du dann nochmal
Nein, read liefert in dem Fall nur int. Deshalb das Casten.

Richtig, Def soll regex enthalten, um ausgegeben zu werden. Wenn ich mir Def ausgeben lasse ergeben sich Zeichenketten, wie zum Beispiel: "$GPGSV", "$PGRME", "$GPGLL", "$PGRMZ".

Hugo
 

Bleiglanz

Gesperrter Benutzer
Lustig
Code:
    String regex = "GPGLL";
   if(Def.indexOf(regex) > 0);
beachte das überflüssige Semikolon am ende
 

hugo

Bekanntes Mitglied
Danke Bleiglanz, manchmal können die Fehler so nahe liegen und man findet sie trotzdem nicht!

Hugo
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben