PDA

View Full Version : [FRAGE] - folgenden char testen


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]

rck
30-05-2004, 12:36
Hallo! In solchen Fällen ist es oft hilfreich, den Sourcecode ein bisserl aufzuräumen. Davon abgesehen: bist Du sicher, dass die Ausgabe nicht "FALSCHE EINGABE" lauten soll?


String variablen="abc";
String junktoren="&V";
String openNeg="(-";

static boolean checkSyntax() {
int len=input.length();


for(int i=0; i<len; i++) {
char current=input.charAt(i);
char next=input.charAt(i+1);

if((variablen.indexOf(current)>-1) || (current==')') {
if((junktoren.indexOf(next)==-1) && (next!='=')) {
return(false);
}
} else
if((junktoren.indexOf(current)>-1) || openNeg.indexOf(current)>-1) {
if((variablen.indexOf(next)==-1) && (openNeg.indexOf(next)==-1)) {
return(false);
}
}
else
return(false);
}
return(true);
}

Subway
30-05-2004, 16:16
Ja Danke. Ich machs aber nur zur Übung und darum achte ich oft nicht so genau auf die Formatierung und dergleichen. It zwar vielleicht eh schlecht aber da ÜberMannt mich wieder die Faulheit.
Aber super, dass du deinen Code postest, weil durch vergleichen und abschauen lernt man glaub (hoffe) ich sehr viel dazu.
Also Danke