Předmět Autor Datum
Protože takhle to opravdu nepůjde. Buď si napiš vlastní evaluator matematických výrazů, nebo si vygo…
Wikan 24.09.2013 13:26
Wikan
Taky jsem k tomu dopěl po asi půlhodině googlování. Používám prostředí Eclipse. Jakým způsobem přid…
Flash_Gordon 24.09.2013 13:36
Flash_Gordon
Tak jestli ti nevadí, že by sis do aplikace přidal bezpečností díru jako vrata, tak i tohle by bylo…
Wikan 24.09.2013 15:27
Wikan
Ona by to možná ani tak velká díra nebyla, protože zpracovává jen číselné vstupy z aplikace. Nelze d…
Flash_Gordon 24.09.2013 15:53
Flash_Gordon
Tak implementace kalkulačky patří mezi základní programátorské úlohy, s tím by si snad neměl mít pro…
Wikan 24.09.2013 15:57
Wikan
Už jsi někdy slyšel o regulárním výrazu? :) poslední
MaSo 25.09.2013 00:38
MaSo
MathEval Tato knihovna po menší úpravě funguje i pro android.
Flash_Gordon 24.09.2013 20:06
Flash_Gordon

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(); ]:(

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:

String st = display1.getText().toString();
		float result = 0;
		
		for(int i=0;i<st.length();i++)
		{
		  if(st.charAt(i)=='+')
		  {
		    result=Float.parseFloat(st.substring(0, i))+Float.parseFloat(st.substring(i+1, st.length()));
		   
		  }  
		  if(st.charAt(i)=='-')
		  {
		    result=Float.parseFloat(st.substring(0, i))-Float.parseFloat(st.substring(i+1, st.length()));
		   
		  }
		  if(st.charAt(i)=='*')
		  {
		    result=Float.parseFloat(st.substring(0, i))*Float.parseFloat(st.substring(i+1, st.length()));
		   
		  } 
		  if(st.charAt(i)=='/')
		  {
		    result=Float.parseFloat(st.substring(0, i))/Float.parseFloat(st.substring(i+1, st.length()));
		   
		  } 
		  
		}
		
		display1.setText(Float.toString(result));

Ale má to nevýhodu, že jak tam někdo napíše více, jak dva operandy - např. 2+3-6 tak to spadne :-(

Zpět do poradny Odpovědět na původní otázku Nahoru