Android - číselné zadání na výsledek
Ahoj.
Zkouším si kalkulačku na androidu.
Zadání je jednoduché. Do stringu nahraju například:
string s = "40/5";
float vysledek = Float.valueOf(s); // Tady to spadne
Chci se zeptat, proč to padá a jak to obejít ?
Ted to hlásí na tom řádku: Unfortunately kalkulacka has stopped.
Protože takhle to opravdu nepůjde. Buď si napiš vlastní evaluator matematických výrazů, nebo si vygoogli nějaký cizí.
Taky jsem k tomu dopěl po asi půlhodině googlování.
Používám prostředí Eclipse. Jakým způsobem přidám onen evaluator do mé aplikace?
A který nejlépe? :)
Zatraceně, kdyby ta Java pro android nebyla tak osekaná.
Stačilo by použít:
import javax.script.*;
....
engine.eval(formula)).intValue();
Tak jestli ti nevadí, že by sis do aplikace přidal bezpečností díru jako vrata, tak i tohle by bylo použitelné...
Ona by to možná ani tak velká díra nebyla, protože zpracovává jen číselné vstupy z aplikace.
Nelze do ní vložit vlastní kódy.
Teďka to mám takto:
Ale má to nevýhodu, že jak tam někdo napíše více, jak dva operandy - např. 2+3-6 tak to spadne
Tak implementace kalkulačky patří mezi základní programátorské úlohy, s tím by si snad neměl mít problém. Vytvoř si strom toho výrazu a pak ho vyhodnoť.
Už jsi někdy slyšel o regulárním výrazu? :)
MathEval
Tato knihovna po menší úpravě funguje i pro android.