![Přidat otázku mezi oblíbené Přidat otázku mezi oblíbené](https://static.poradna.net/images/post/action/favorite.png)
![Zasílat nové odpovědi e-mailem Zasílat nové odpovědi e-mailem](https://static.poradna.net/images/post/action/subscribe.png)
Java: Jak udělat ze String matematický výraz?
Ahoj, potřebuji ze Stringu např: (10-20)/50
udělat matematický výraz a vypočítat ho :) poradíte prosím
Ahoj, potřebuji ze Stringu např: (10-20)/50
udělat matematický výraz a vypočítat ho :) poradíte prosím
Zpět do poradny Odpovědět na původní otázku Nahoru
v akom jazyku? pre konkretny jazyk hladaj funkciu eval. bud bude interna alebo ju uz niekto napisal.
Poradna.net zdraví Igora!
(host)
Igor žije!!! Čau :)
zijem, cau. :) ot: dnes je formula 1, budes pozerat?
Taky OT:
To jsem málem nezaregistroval, budu.
ot pokracuje: o 1:00 je kvalifikacia, presunuli ju kvoli dazdu.
OT:
Klidně mohli na dvě hodiny, koupil jsem sedmičku ___ za 249,- Kč. Budu se udržovat v bdělém stavu.
Tyvole nazdar
... ty se tu taky ukážeš jednou za sto let co ![:-)](https://static.poradna.net/images/smiley/smile.gif)
Podle toho tedy vypadá, že tu IgoraK zase dlouho neuvidíme![:-(](https://static.poradna.net/images/smiley/worry.gif)
Škoda, jeho kurzy pro mladé hackery bylo zábavné počtení.
SuperOT: podle avataru to vypadá, že IgorK vychovává následovníka (-ici)
V Javě bohužel taková funkce není, takže si ji můžeš buď naprogramovat sám nebo se to dá ochcat přes zavolání javascriptu z Javy.
Ale to zavolání JS může být dost velká bezpečnostní díra.
Proč myslíš?
Protože se tam dá vnutit v podstatě libovolný JS kód.
Jo takhle, tam by se dalo narvat v podstate cokoli i Java kód. No musí si to hlídat, třeba nějakým šikovným regexpem...![:-)](https://static.poradna.net/images/smiley/smile.gif)
a nešlo by použít Iteger.parseInt? používal jsem to když jsme ve škole dělali kalkulačku. Tady je část pro sčítání:
To by teda nešlo, tady se řeší úplně jiný problém...
Ak si to budeš implementovať sám, tak najjednoduchšie je spraviť si 2 zásobníky (jeden pre operátory, druhý pre operandy), postupne prechádzať výrazom (napíšeš si lexer, t.j. funkciu, ktorá ti bude vracať nasledujúci token zo vstupu) a vyhodnocovať podľa priority operátorov. Pozri si algoritmus shunting-yard.