ich hab da ein frage bei der ich das erste mal zweifle ob es dazu eine passende Antwort gibt. Es geht darum das ich in einer If abfrage eine Bedingung vornehmen möchte welche in einer variabel gespeichert ist. Sprich es sieht folgendermaßen aus:
Ich bin mir dessen bewusst dass das quatsch ist. Aber gibt es eine möglichkeit eine bedingung in einer Variabel zu speichern und diese Variabel dann als Parameter in der If Abfrage setzt?
hm du kannst nur boolsche ausdrücke in if-bedingungen verwenden, die kannst du sicherlich vorher berechnen lassen .. aber das beispiel da oben ist bedingt durch String total unbrauchbar
Das ist ja wirklich eine philosophische Betrachtungsweise, "ich hab da ein frage bei der ich das erste mal zweifle ob es dazu eine passende Antwort gibt". Aber ganz so ist es nicht.
Für so etwas brauchst Du einen Parser für solche textlichen Ausdrücke, es ist ja in gewisser Weise eine Art Programmierbarkeit Deines Programms. Das ist definitiv nicht trivial und je nach Kenntnisstand würde ich sagen, einfach die Finger davon lassen, ansonsten entweder nach Parser-Generatoren umschauen oder per Hand so etwas programmieren.
package dumb;publicclassBedingungInVariableSpeichern{publicstaticvoidmain(String[] args){FloatBedingung[] bedingungen =newFloatBedingung[3];
bedingungen[0]=newFloatBedingung(){@Overridepublicbooleanaccept(float f){return f >5.5;// Beispielcode...}};
bedingungen[1]=newFloatBedingung(){@Overridepublicbooleanaccept(float f){return f%10==2;// Beispielcode...}};
bedingungen[2]=newFloatBedingung(){@Overridepublicbooleanaccept(float f){return f<0 && f >-12.5;// Beispielcode...}};// Beispiel: iteriert über die Zahlen -15 bis 14 und prüft für jede Zahl welche der Bedingungen zutreffen.for(float f=-15;f<15;++f){for(int i=0;i<bedingungen.length;++i){if(bedingungen[i].accept(f)){System.out.println(f+" wird von bedingung nr. "+i+" akzeptiert!");}}}}}publicinterfaceFloatBedingung{publicbooleanaccept(float f);// du kannst natürlich die Methode so gestalten wie du willst, z.b. mehrere Parameter oder einen anderen Namen oder ...}
Du speicherst verschiedene Implementierungen der Methode accept(float f) in einem Array (oder einer Liste oder oder oder...) ab.
überlass doch dem Fragensteller ob er die Antworten versteht oder nicht. Imho ist mein Lösungsvorschlag eine der wenigen Lösungen für so ein Problem, und auch recht üblich.