Überprüfung auf Leerzeichen

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich bekomme von einem Server Meldungen rein wie z.B.
a\n
b\n
c\n

Nun werden die Leerzeilen versehentlichen weggelassen, und es gilt für mich dies zu überprüfen und zu melden..
a b c\n

Folgender try catch Block wird übersprungen, obwohl doch das try-Statement zu trifft.. Wieso?

Code:
try{
      vomServer.readLine().equals("a b c\n);
} catch (Excpetion e){
      toServer.write("Fehler");
}
[/quote]
 
Ok... Ein vomServer.matches sollte aber eine Exception werfen wenn invalid, korrekt?

readLine() liesst bis zum ersten Zeilenumbruch ein, ist das richtig?

Dann sollte es doch zumindest bei
Code:
try{
      vomServer.readLine().equals("a" + \n + " b" + \n + "c" + \n);
} catch (Excpetion e){
      toServer.write("Fehler");
}

abbrechen, was auch nicht getan wird...
 
Das da kannst du doch nicht mal kompilieren! Wenn dann müssen die Zeilenumbruchzeichen in einfachen Anführungszeichen stehen ( '\n'), weil char! Außerdem verstehe ich dein Problem nicht ganz...
Es wird eine einzige Zeile vom Server gelesen, und wieso willst du diese dann auf Zeilenumbrüche untersuchen lassen? Ergibt irgendwie keinen Sinn, weil immer false dabei rauskommt.

Und wenn du vom Ergebnis der equals-Methode abhänige Schritte einleiten willst, musst du wohl oder übel eine if-Klausel benutzen.

Code:
if (!vomServer.readLine().equals("..."))
 toServer.write("fehler");
 
Es wird schon mehr vom Server gelesen als nur die eine Zeile. Ich will überprüfen ob die Angaben korrekt sind. u.a. halt ob nach jedem Zeichen ein Zeilenumbruch da ist, oder wenn nicht dann einen Fehler zurückgeben.. Deswegen die try catch Blöcke...
 
Dann liest du vom Server Zeichen für Zeichen und untersuchst, ob jedes zweite ein Zeilenumbruchzeichen ist. Angenommen, is sei der InputStream vom Server.
Code:
public void checkLineseparator(InputStream is) {
int sign, number = 0;
while ((sign = is.read()) != -1) {
 if (number%2 != 0 && ((char)sign) != '\n')
  throw new RuntimeException();

 number++;
}
}
Code ohne Garantie.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben