Einen String als Bedingung auswerten

  • Themenstarter Themenstarter kopinsky
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
K

kopinsky

Gast
Hallo zusammen.

ich habe eine Bedingung als String-Variable und möchte diese nun in einem if-Statement auswerten. Geht das mit Java? Also ungefähr folgendermaßen:

Code:
int a=1;
int b=2;

String bed="a+b>2";

if (bed){
  System.out.println("Die Bedingung ist erfüllt");
}
So geht es natürlich nicht, aber kann ich die String-Variable irgendwie in eine Bedingung wandeln, die dann ausgewertet werden kann? Geht es vielleicht mit Reflection? Oder geht sowas gar nicht?

Wäre nett, wenn mir da jemand einen kleinen Tip geben kann. Danke
Christoph
 
hää?

was willste den machen

is doch humbuck ein int in einen String zu wandelt
und dan zu iffen

wen dan

if( (a+b) < 2)

oder so
 
na ja, das war nur ein beispiel. In diesem Zusammenhang macht es natürlich keinen Sinn.

Sagen wir mal, ich möchte Bedingungen an zentraler Stelle ablegen und dann dynamisch auswerten lassen. Dabei möchte ich soviele Bedingungen definieren können wie ich will und alle sollen nacheinander abgearbeitet werden. ich weiss, dass an der Stelle im Code, wo die Bedingungen abgearbeitet werden sollen, eine Variable namens "content" vorhanden ist, und jetzt möchte ich eine Liste von Bedingungen füllen und da zum Beispiel reinschreiben

"content.length()>0 && content.length()<6"
"content=='fish'"
usw.

Und diese Bedinungen sollen dann nacheinander ausgewertet werden.
 
uiuiuiui schon wieder ==

Strings vergleich man mit equals() oder equalsIgnoreCase()

oder mit idndexOf() oder mit contains()

also

if( myString.equals("fish"))
if( myString.indexOf("fisch) > -1)
if( myString.contains("fi"))

gehe auf FAQ
 
das wird sehr aufwendig,

1.
zum einen den String zu parsen und Zeichen wie < zu verstehen sowie die Verknüpfung zwischen den einzelnen Elementen festzustellen

dies könntest du verhindern, wenn du keinen String 'an zentraler Stelle' ablegst, sondern dort gleich eine Objektstruktur:
statt
String bedingung = "a+b>2";
also
Bedindung bedingung = createGreater(createAdd(createVariable("a"), createVariable("b")),2);

ansonsten muss der Parsen eben diese Objekte aus dem String bauen,
aufwendiger, aber dann kann man Bedinungen lesbarer formulieren 😉

2.
wenn du dann die abstrakte Information 'tue was mit Variable "a"' hast,
dann musst du noch auf die vorhandene Variable a zugreifen,
das geht mit Reflection (vielleicht nur für Exemplarvariablen, nicht für lokale Variablen)

besser wäre es wohl, auf feste Bezeichner zu verzichten
sondern eher mit einer Liste von Parametern zu arbeiten
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben