Frage zu java / kompakterer code?

Erstmal Hallo an alle hier im Forum!!

Eine Frage, gibt es eine Moeglichkeit nachfolgenden Code eleganter bzw. kompakter zu schreiben:

if (state == 130) {
switch (asciisplit[j][zaehler]) {
case 8:
System.out.println("gD ");
theOutput.write( ("gD ").getBytes());
state = 8;
zaehler++;
break;
case 4:
System.out.println("gR ");
theOutput.write( ("gR ").getBytes());
state = 4;
zaehler++;
break;
case 2:
System.out.println("gU ");
theOutput.write( ("gU ").getBytes());
state = 2;
zaehler++;
break;
case 1:
System.out.println("gL ");
theOutput.write( ("gL ").getBytes());
state = 1;
zaehler++;
break;
default:
System.out.println(„Fehler“);
}
}

if (state == 8) {
switch (asciisplit[j][zaehler]) {
case 4:
System.out.println("rR ");
theOutput.write( ("rR ").getBytes());
state = 4;
zaehler++;
break;
case 2:
System.out.println("mC ");
theOutput.write( ("mC ").getBytes());
System.out.println("gU ");
theOutput.write( ("gU ").getBytes());
state = 2;
zaehler++;
break;
case 1:
System.out.println("rL ");
theOutput.write( ("rL ").getBytes());
state = 1;
zaehler++;
break;
}
}

Danke & Gruss,
lesezeichen

Hi.

...
if (state == 130) {
 switch (asciisplit[j][zaehler]) {
 case 8 :
 System.out.println("gD ");
 theOutput.write(("gD ").getBytes());
 break;
 case 4 :
 System.out.println("gR ");
 theOutput.write(("gR ").getBytes());
 break;
 case 2 :
 System.out.println("gU ");
 theOutput.write(("gU ").getBytes());
 break;
 case 1 :
 System.out.println("gL ");
 theOutput.write(("gL ").getBytes());
 break;
 default :
 System.out.println("Fehler");
 }
 state = asciisplit[j][zaehler];
 // zaehler++;
 // continue;
}

if (state == 8) {
 switch (asciisplit[j][zaehler]) {
 case 4 :
 System.out.println("rR ");
 theOutput.write(("rR ").getBytes());
 break;
 case 2 :
 System.out.println("mC ");
 theOutput.write(("mC ").getBytes());
 System.out.println("gU ");
 theOutput.write(("gU ").getBytes());
 break;
 case 1 :
 System.out.println("rL ");
 theOutput.write(("rL ").getBytes());
 break;
 }
 state = asciisplit[j][zaehler];
 // zaehler++;
 // continue;
}
...
zaehler++;
  • state brauchst du nur einmal setzen, da du ihn ja sowieso
    immer auf den case-Wert setzt.
  • da du zaehler ja sowieso immer inkrementierst, kannst du das
    an nur einer Stelle machen

Da sich state ja ggfs. in einer if-Abfrage aendert (Beispiel
if (state == 130) -> state = 8 -> if (state == 8), ist die
Frage, ob dann auch die naechste if-Abfrage durchlaufen werden
soll?
Dann solltest du den zaehler in der if-Abfrage inkrementieren, falls
gewuenscht. Falls nicht, zaehler erst vor dem naechsten Durchlauf
erhoehen.
Um die ifs zu ueberspringen mit continue den naechsten
Schleifendurchlauf erzwingen.

Gruss, Patrick