1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Java: Zeichenetikette ausrechnen

Dieses Thema im Forum "OS X-Developer" wurde erstellt von keman, 07.04.06.

  1. keman

    keman Gast

    Weiss jemand wie ich z.B. den String "2+2" in einem Int konvertieren kann, so dass der Integer die Lösung der Rechnung ist, also 4? Gibt es hier irgendwelche Bibliotheken? Oder weiss jemand, wie man das ganze manuell machen kann?
     
  2. Ollo

    Ollo Golden Delicious

    Dabei seit:
    25.07.04
    Beiträge:
    6
    Hallo,

    Code:
    int i = Integer.parseInt("2"); 
    könnte dir weiterhelfen.

    Aber du müsstest meines wissens den string zerlegen.
    So, dass du dann
    Code:
    int ergebnis = i1 + i2;
    hast.

    Mfg
    Ollo

    PS : Java ist auch nur eine Insel könnte dir weiterhelfen.
     
  3. FloydThreepwood

    FloydThreepwood Stechapfel

    Dabei seit:
    19.01.06
    Beiträge:
    161
    NAtürlich klappt das nicht, ein String ist eine Zeichenkette und kein Taschenrechner.

    Mein Vorschlag (grobes algorithmisches Vorgehen):
    Zerlege in einzelzeichen, dann trenne zwischen Operator (+) und Zahl, addiere Zahlen.

    Zu lösen blieben noch:
    1. Was mit mehrstelligen Zahlen (wenn man von rechts liest kaum ein Problem)?
    2. Andere Operatoren unterstützen (am einfachsten rekursiv)?

    Ich hoffe es ist ein wenig klarer geworden, ist auf jeden Fall ne schöne Aufgabe. Ich Programmier gerade selber an einer Art Taschenrechner, allerdings basierend auf Formalen Gramatiken (Gleichungslogik) und daher mit sehr vielen Variablen. Am einfachsten wird das ganze im Übrigen indem man seinen eingabetyp ändert und sich mal mit binären Bäumen auseinandersetzt.

    cu ft
     
  4. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    Das ist eine sehr spassige Sache. Hab auch mal was in der Art machen dürfen... hat tierisch Spass gemacht .... wurde dann allerdings nicht benutzt :(
     
  5. FloydThreepwood

    FloydThreepwood Stechapfel

    Dabei seit:
    19.01.06
    Beiträge:
    161
    Ich hab schon Leute, die es kaufen wollen. Befinde mich gerade mitten im Konzeptdesign. Klar ist mir das ganze Zwar schon mit Formeln und Funktionen, schwerer wird allerdings Matrizen und Vektoren in diese Logik einzufügen, zumal ich Angst vor den unendlichen Universen im Endscheidungsraum habe. Da ich mich auf ein formales TES stütze, muss ich irgendwie Eingaben endlichen zu einer Lösung führen... Spaß macht es, aber auch Angst. Es gibt doch auch keinen praktikablen Test auf Noethersch, oder?

    cu ft
     
  6. keman

    keman Gast

    Klar kann ich dies hier machen:

    String rechnung = "2+2";
    String zerlegt = rechnung.split("+");


    Aber wenn ich eine solche Rechnung habe:

    String rechnung = "2+4-3";

    geht das nicht...
     
  7. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    Klar nicht, Du musst die Zeichenkette untersuchen und dann nach den mathematischen Regeln abarbeiten...
     
  8. keman

    keman Gast

    Eben, wie kann ich das machen? Genau deswegen frage ich ja...
     
  9. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    Naja.. du gehst nach den rechenregeln vor:

    - Klammern auflösen usw.
    - Punkt vor Strich
    - usw

    Mach es einfach so, wie du es auf einem Blatt Papier auch machen würdest.

    - Suche die erste öffnende Klammer
    - Klammer gefunden, dann such die die schliessenden (darauf achten, dass die nächste schliessende nicht unbedingt die richtige ist!)
    - Wenn du dann einen klammerfreien Term hast, suche nach '*' und/oder '/' und führe die entsprechende operationen durch...
    - Das gleiche für + und -
    - Die ganzen Ergebnisse verwaltest Du in temporären Variablen ...
    - irgendwann hast du das dann soweit vereinfacht, dass z.b. du nur noch

    tmpErgebnis1 + tmpErgebnis2
    (das ist natürlich nur pseudocode)

    hast..

    du solltest ich an den Umgang mit indexOf() gewöhnen :)
     

Diese Seite empfehlen