lynxx
Lt. Junior Grade
- Registriert
- Feb. 2005
- Beiträge
- 470
Ich würde es mir mit bits merken:
Code:
private const String KEY_objektStart = "objektStart";
private const String KEY_aussenStart = "aussenStart";
private const String KEY_innenStart = "innenStart";
private const String KEY_innenEnde = "innenEnde";
private const String KEY_aussenEnde = "aussenEnde";
private const String KEY_objektEnde = "objektEnde";
private const int KEY_OBJEKTBIT = 1;
private const int KEY_AUSSENBIT = 2;
private const int KEY_INNENBIT = 4;
private static boolean alleStatementsGeschlossen(ArrayList<String> dateiInhalt) {
int state = 0;
for (int i = 0; i < dateiInhalt.size(); i++) {
switch (dateiInhalt.get(i)) {
case KEY_objektStart:
if (state != 0)
return fehlerAusgabe(KEY_objektStart, i);
state = KEY_OBJEKTBIT;
break;
case KEY_aussenStart:
if (state != KEY_OBJEKTBIT)
return fehlerAusgabe(KEY_aussenStart, i);
state |= KEY_AUSSENBIT;
break;
case KEY_innenStart:
if (state != (KEY_OBJEKTBIT | KEY_AUSSENBIT))
return fehlerAusgabe(KEY_innenStart , i);
state |= KEY_INNENBIT;
break;
case KEY_innenEnde:
if (state != (KEY_OBJEKTBIT | KEY_AUSSENBIT | KEY_INNENBIT))
return fehlerAusgabe(KEY_innenEnde , i);
state = (KEY_OBJEKTBIT | KEY_AUSSENBIT);
break;
case KEY_aussenEnde:
if (state != (KEY_OBJEKTBIT | KEY_AUSSENBIT))
return fehlerAusgabe(KEY_aussenEnde , i);
state = KEY_OBJEKTBIT;
break;
case KEY_objektEnde:
if (state != KEY_OBJEKTBIT)
return fehlerAusgabe(KEY_objektEnde , i);
state = 0;
break;
default:
break;
}
}
return (state == 0);
}
private static boolean fehlerAusgabe(String strInput, int number) {
System.out.println("Fehler vor " + strInput + " in Zeile " + number);
return false;
}