Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Addition mit Operator als Variable?





Frage

Hallo Leute, folgende Variablen sind definiert: int a = 3; int b = 2; int x = '+'; int c; nun möchte ich aus diesen Variablen c = a + b errechnen, dabei ist x auch variabel, weil es von einer Methode zufällig übergeben wird. Kann man das in Java irgendwie machen? Wie sieht die Syntax dazu aus? Vielen Dank schon jetzt. Dramirak

Antwort 1 von Dramirak

Das kann doch nicht so schwer sein. Hat denn niemand eine Lösung?

Antwort 2 von Mairo Jungwirth

Kann das stimmen int x="+"
+ ist doch ein string
aber ich glaube das das nicht gehen kann
du müstest eine function schreiben die zb. nur additionen macht
mfg mario

Antwort 3 von Dramirak

Ja sorry hatte mich verschrieben, sollte natürlich so lauten:

int a = 3;
int b = 2;
char x = '+';
int c;

Ja daran habe ich auch schon gedacht, doch würde ich gerne wissen, ob es da keine andere Möglichkeit gibt.
Danke nochmal,
Dramirak

Antwort 4 von Markus Brock

Du könntest mit "document.write" ein neues JSkript in das Dokument schreiben und dort den Wert von "c" berechnen lassen.
Wegen einer einzigen Addition o.ä. lohnt sich das aber wohl kaum.
Mit ein paar "if"-Anweisungen sollte das besser gehen.

Antwort 5 von semi

Geht es hier um Java oder Javascript?
In Javascript geht es mit der Funktion eval.
z.B.

var a=3;
var b=2;
var x='+';
var expression1 = "a" + x + "b";
alert(eval(expression1));
var expression2 = "a * b";
alert(eval(expression2));

In Java gibt es sowas nicht, Du mußt einen kleinen Interpreter schreiben.


Antwort 6 von tuntenhase

In VB ginge das doch mit der Select Case Funktion, bezogen auf C. Natürlich nur, wenn die Variable nur bestimmte Werte (z.B. "+", "-" und "*") annehmen könnte.

Gibt es sowas in Java nicht?

Antwort 7 von semi

Hier ein Beispiel eines Algorithmus zur auswertung arithmetischer Ausdrücke.
Voraussetzung: Korrekt geklammerte Ausdrücke.
z.B.
(((a+b)-(c*(d+a)))*2)


  • Operanden auf Operandenstack
  • Operatoren auf Operatorenstack
  • Öffnende Klammern ignorieren (evtl. zählen und mit schl. vergleichen)
  • Bei schließenden Klammern:
    [list=i]
  • Obersten Operator holen
  • Zwei Operanden holen
  • Oparation durchführen
  • Ergebnis zurück auf den Operandenstack


    Am Ende ist nur ein Wert auf dem Operandenstack, das Ergebnis.


  • Ich möchte kostenlos eine Frage an die Mitglieder stellen:


    Ähnliche Themen:


    Suche in allen vorhandenen Beiträgen: