Subway
29-05-2004, 04:48
Fehler schon erkannt
Hallo!
Bitte Hilfe! Sitze da schon sehr lange davor und komm nicht drauf warum ich immer ein "Falsche Eingabe bekomme. Hier die Angabe:
Auf eine Variable oder eine schließende Klammer muß ein Junktor, eine schließende Klammer oder das Satzendezeichen folgen.
Auf einen Junktor, den Negationsoperator oder eine öffnende Klammer muß eine Variable, eine öffnende Klammer oder der Negationsoperator folgen.
static boolean checkSyntax() {
boolean nextTest=false;
for (int i=0; i<input.length(); i++) {
nextTest=false;
if (input.charAt(i)=='a' || input.charAt(i)=='b' ||
input.charAt(i)=='c' || input.charAt(i)==')') {
if (input.charAt(i+1)==')'||
input.charAt(i+1)=='&'||
input.charAt(i+1)=='V'||
input.charAt(i+1)=='=')
nextTest=true;
else {
nextTest=false;
break;
}
}
else if (input.charAt(i)=='&' || input.charAt(i)=='V' ||
input.charAt(i)=='-' || input.charAt(i)=='('){
if(input.charAt(i+1)=='a'||
input.charAt(i+1)=='b' ||
input.charAt(i+1)=='c' ||
input.charAt(i+1)=='(' ||
input.charAt(i+1)=='-' )
nextTest=true;
else {
nextTest=false;
break;
}
}
}
return nextTest;
}
public static void main (String[] args) throws EprogException {
input=readWord();
if(checkSyntax()==false)
println("Falsche Eingabe");
}
}
Danke für jede Bemühung
So bin grad draufgekommen, dass wenn ich nextTest mit true initialisiere klappts wunderbar. Warum das so ist kann ich leider nciht nachvollziehen
[Edit#2]Ahh jetzt weiß ich warum. Durch das letzte Zeichen wird ja die Schleife noch einmal durchlaufen und nextTest auf true bzw false gesetzt, aber es erfüllt keine if-Bedingung mehr und somit bleibt es auf false[/Edit#2]
Hallo!
Bitte Hilfe! Sitze da schon sehr lange davor und komm nicht drauf warum ich immer ein "Falsche Eingabe bekomme. Hier die Angabe:
Auf eine Variable oder eine schließende Klammer muß ein Junktor, eine schließende Klammer oder das Satzendezeichen folgen.
Auf einen Junktor, den Negationsoperator oder eine öffnende Klammer muß eine Variable, eine öffnende Klammer oder der Negationsoperator folgen.
static boolean checkSyntax() {
boolean nextTest=false;
for (int i=0; i<input.length(); i++) {
nextTest=false;
if (input.charAt(i)=='a' || input.charAt(i)=='b' ||
input.charAt(i)=='c' || input.charAt(i)==')') {
if (input.charAt(i+1)==')'||
input.charAt(i+1)=='&'||
input.charAt(i+1)=='V'||
input.charAt(i+1)=='=')
nextTest=true;
else {
nextTest=false;
break;
}
}
else if (input.charAt(i)=='&' || input.charAt(i)=='V' ||
input.charAt(i)=='-' || input.charAt(i)=='('){
if(input.charAt(i+1)=='a'||
input.charAt(i+1)=='b' ||
input.charAt(i+1)=='c' ||
input.charAt(i+1)=='(' ||
input.charAt(i+1)=='-' )
nextTest=true;
else {
nextTest=false;
break;
}
}
}
return nextTest;
}
public static void main (String[] args) throws EprogException {
input=readWord();
if(checkSyntax()==false)
println("Falsche Eingabe");
}
}
Danke für jede Bemühung
So bin grad draufgekommen, dass wenn ich nextTest mit true initialisiere klappts wunderbar. Warum das so ist kann ich leider nciht nachvollziehen
[Edit#2]Ahh jetzt weiß ich warum. Durch das letzte Zeichen wird ja die Schleife noch einmal durchlaufen und nextTest auf true bzw false gesetzt, aber es erfüllt keine if-Bedingung mehr und somit bleibt es auf false[/Edit#2]