Hallo Liebe Community !
Ich soll ein Programm schreiben welches maximal 3 chars ein liest und auswertet ob diese gültig sind oder nich. Es geht um ein Menü
wo a für Hauptmahlzeit
b für Beilagen
c für Soßen
Ein Menü setzt sich aus der Hauptmahlzeit und beliebiger Anzahl an Nachtischen zusammen.
Insgesamt können maximal 3 Produkte gewählt werden. Erst wenn Beilagen gewählt wurden, können dazu beliebige Saucen kombiniert werden. Eine Sauce zählt dabei nicht als Produkt. Ein Menü besteht aus mindestens einem Produkt.
Nun soll mir natürlich das Programm anzeigen ob die Eingabe Gültig oder ungültig ist.
wenn abc dann gültig
wenn ab dann gültig
wenn abb dann gueltig usw..
Nun habe ich folgenden Code entwickelt.
Warum schmeißt er mir bei Eingabe abc einen Exception ?
Ich denke die Überführungsfunktionen stimmen noch nicht so..
Kann mir wer helfen ?
Ich kann es natürlich mit ganz vielen Switches lösen bis S==6 aber
geht es nicht einfacher. ?
Flo
Ich soll ein Programm schreiben welches maximal 3 chars ein liest und auswertet ob diese gültig sind oder nich. Es geht um ein Menü
wo a für Hauptmahlzeit
b für Beilagen
c für Soßen
Ein Menü setzt sich aus der Hauptmahlzeit und beliebiger Anzahl an Nachtischen zusammen.
Insgesamt können maximal 3 Produkte gewählt werden. Erst wenn Beilagen gewählt wurden, können dazu beliebige Saucen kombiniert werden. Eine Sauce zählt dabei nicht als Produkt. Ein Menü besteht aus mindestens einem Produkt.
Nun soll mir natürlich das Programm anzeigen ob die Eingabe Gültig oder ungültig ist.
wenn abc dann gültig
wenn ab dann gültig
wenn abb dann gueltig usw..
Nun habe ich folgenden Code entwickelt.
Warum schmeißt er mir bei Eingabe abc einen Exception ?
Ich denke die Überführungsfunktionen stimmen noch nicht so..
Kann mir wer helfen ?
Ich kann es natürlich mit ganz vielen Switches lösen bis S==6 aber
geht es nicht einfacher. ?
Java:
import AlgoTools.IO;
public class automat {
public static void main (String [] argv) {
int[][] menue = {{0,1,2}, // Ueberfuehrungsfunktion
{0,2,1},
{2,1,0},
{2,0,1},
{1,2,0},
{1,0,2},
};
int s; // Nummer des Zustands
char[] zeile=IO.readChars("Bitte Ihre BEstellung eingeben "); // fordere Eingabe an
s = 0; // Startzustand
for (int i=0; i < zeile.length; i++){ // fuer jedes Zeichen
switch(zeile[i]) { // abhaengig vom Zeichen
case 'a': s = menue[s][0];break; // wende die Ueber-
case 'b': s = menue[s][1];break;
case 'c': s = menue[s][2];break; // fuehrungsfunktion an
default: IO.println("Falsches Zeichen !"); // unzulaessiges Zeichen
}
}
if (s==0) IO.println("Menue ist gueltig"); // Automat akzeptiert
else IO.println("Menue ist ungueltig");
// Automat lehnt ab
}
}
Flo
Zuletzt bearbeitet: