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
Předmět | Autor | Datum |
---|---|---|
V Javě bohužel taková funkce není, takže si ji můžeš buď naprogramovat sám nebo se to dá ochcat přes… MaSo 17.03.2013 15:05 |
MaSo | |
Ale to zavolání JS může být dost velká bezpečnostní díra. Wikan 17.03.2013 16:24 |
Wikan | |
Proč myslíš? MaSo 17.03.2013 16:59 |
MaSo | |
Protože se tam dá vnutit v podstatě libovolný JS kód. nový Wikan 17.03.2013 17:01 |
Wikan | |
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 š… nový MaSo 17.03.2013 17:26 |
MaSo | |
a nešlo by použít Iteger.parseInt? používal jsem to když jsme ve škole dělali kalkulačku. Tady je čá… nový tom.win 17.03.2013 23:43 |
tom.win | |
To by teda nešlo, tady se řeší úplně jiný problém... poslední MaSo 17.03.2013 23:54 |
MaSo | |
Ak si to budeš implementovať sám, tak najjednoduchšie je spraviť si 2 zásobníky (jeden pre operátory… nový los 17.03.2013 19:46 |
los |
Zpět do poradny Odpovědět na původní otázku Nahoru
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...
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.