Wertes Publikum, ich möchte objektorientiert einen Regex-Parser, der eine fixe Folge von Anfangsbuchstaben, dann beliebig viele Buchstaben und dann eine fixe Folge von Buchstaben erkennt schreiben.
Zum Beispiel: bcdx*efg , wobei x ein beliebiges Zeichen ist
Wie muss ich vorgehen? Vielen Dank!
Wenn deine Frage ist, "Wie muss ich vorgehen", kann man da kaum näher drauf eingehen, zumindest nicht in Zusammenhang mit dem Code den du gezeigt hast.
Wie schon zwei mal gesagt: Gibts in Java schon fertig. Wenns zur Übung, solltest du zumindest irgendeinen Ansatz haben, zu dem man was sagen könnte. Kommentar #3 und #4 sind nicht wirklich hilfreich, um dir irgendwie zu helfen...
Dann versuche ich zu beschreiben. Der Parser soll nicht zeichenbasiert sondern zeilenbasiert vorgehen, dabei kann ein verschiedener Wert in einer Zeile stehen. Der Spielstand besteht aus einer Zeichendatei.
Zum Beispiel ab Zeile ~835:
Java:
277.223//(fix)TrueFalseFalseTrue//(~49 Zeilen mit False or True)
ITEMS PARAMETERS IN INVENTORY //(fix)
Alle False Zeilen sollen True Zeilen bekommen. Das funktioniert auch schon aber jetzt kommt der Hammer, ca 150 nach der ITEMS... Zeile steht:
Java:
0//(fix)False//(fix)1//(fix)100.2648//(zwischen 0 und 200)100//(zwischen 0 und 100)20.21889//(zwischen 0 und 100)0//(0 oder 1)True//(True or False)True//(True or False)False//(True or False)4905//(irgendwelcher Wert)4964//(irgendwelcher Wert)6//(irgendwelcher Wert)0//(irgendwelcher Wert)99.73041//(zwischen 0 und 100)7999//(irgendwelcher Wert)25//(beliebig oft vorkommende Zeile n zwischen 0 und 100)26//(beliebig oft vorkommende Zeile n zwischen 0 und 100)...22061941//(fix)
Und genau dort bei (beliebig oft vorkommende Zeile n zwischen 0 und 100) und ... funktioniert Parser nicht richtig. Die verschiedenen Werte stehen zum Beispiel für Gold, Ausdauer, Gesundheit, Müdigkeit, Tatkraft usw!
String line;while((line = reader.readLine())!=null){int value =Integer.parseInt(line);if(value >=0&& value <=100){// ah, eine beliebig oft vorkommende Zeile n zwischen 0 und 100}else{// oh, der fixe Wert}}
Warum nicht? Du willst so lange Zeilen einlesen, bis kein Wert mehr zwischen 0 und 100 rauskommt. Im else-Zweig würdest Du natürlich die Schleife beenden. Oder, man schreibt es etwas um:
Java:
String line;boolean done =false;while(!done &&(line = reader.readLine())!=null){int value =Integer.parseInt(line);if(value >=0&& value <=100){// ah, eine beliebig oft vorkommende Zeile n zwischen 0 und 100}else{// oh, der fixe Wert
done =true;}}// hier enthält line den ersten Wert, der nicht zwischen 0 und 100 liegt
Ich kannte mal jemanden der das so an die Tafel geschrieben hat in der Vl. hrhrhr Ist aber schon Jährchen her hrhr. Aber , @mihe7 , das Problem ist ich möchte das objektorientiert dynamisch programmiert mit nur zwei geschachtelten Schleifen und wenigen IFs lösen. Wie gehe ich vor am besten? BA gleich beliebiger Boolean Wert in Zeile l. BB gleich bestimmter Wert in Zeile l. FB gleich bestimmter Float Wert in Zeile <= l. Und das Problem, die eindeutigen Zeichen "ITEMS PARAMETERS IN INVENTORY" stehen mittig und einmal sind diesen Werte vorgestellt und einmal sind diesen Werte nachgestellt....
das Problem ist ich möchte das objektorientiert dynamisch programmiert mit nur zwei geschachtelten Schleifen und wenigen IFs lösen. Wie gehe ich vor am besten?