en teoria puede calcular una cadena mas o menos asi "2+2+2+2+2+2+2+2+2+2" pero por algun bug que tengo que ver solo hace hasta "2+2+2", hace las 4 operaciones básicas, y creo que haciéndolas no tiene errores
aqui el codigo:
Código: Seleccionar todo
public class AnaString
{
public static double Calc(String Cadena)
{
String numeros = "123456790";
String Operaciones = "+-*/";
int Tm = 0, i = 0, n = 0, m = 0, k = 0;
String Num[] = new String[10];
char ope[] = new char[10], j;
double res = 0,a;
for(i=0;i<10;i++)
{
Num[i]="0";
}
Tm = Cadena.length();
for(i=0;i<Tm;i++)
{
for(n=0;n<9;n++)
{
if(Cadena.charAt(i)==numeros.charAt(n))
{
j= Cadena.charAt(i);
Num[k]=Num[k]+j;
}
else
{
for(m = 0;m<4;m++)
{
if(Cadena.charAt(i)== Operaciones.charAt(m))
{
if(ope[(i-1)]!= Operaciones.charAt(m))
{
ope[(i-1)]=Cadena.charAt(i);
k++;
}
}
}
}
}
}
for(i=0;i<10;i++)
{
switch(ope[i])
{
case '+':
{
if(i == 0)
{
res = res + Double.parseDouble(Num[i]);
a = Double.parseDouble(Num[i+1]);
res = res + a;
}
else
{
a = Double.parseDouble(Num[i]);
res = res + a;
}
break;
}
case '-':
{
if(i == 0)
{
res = res - Double.parseDouble(Num[i]);
a = Double.parseDouble(Num[i+1]);
res = res - a;
}
else
{
a = Double.parseDouble(Num[i]);
res = res - a;
}
break;
}
case '*':
{
if(i == 0)
{
res = res + Double.parseDouble(Num[i]);
a = Double.parseDouble(Num[i+1]);
res = res * a;
}
else
{
a = Double.parseDouble(Num[i]);
res = res * a;
}
break;
}
case '/':
if(i == 0)
{
if(Double.parseDouble(Num[i])!= 0)
{
res = res + Double.parseDouble(Num[i]);
}
else
{
System.out.println("No se puede dividir por cero");
System.exit(0);
}
a = Double.parseDouble(Num[i+1]);
if(a != 0)
{
res = res / a;
}
else
{
System.out.println("No se puede dividir por cero");
System.exit(0);
}
}
else
{
a = Double.parseDouble(Num[i]);
if(a != 0)
{
res = res / a;
}
else
{
System.out.println("No se puede dividir por cero");
System.exit(0);
}
}
}
}
return res;
}
}
Código: Seleccionar todo
public class Calculadora_2
{
public static void main(String[] args)
{
String a;
Double b;
System.out.println("Ingrese la operacion");
a = Teclado.readString();
b = AnaString.Calc(a);
System.out.println("La Respuesta es = "+b);
}
}
cualquier sugerencia es buena xD, por ahora esta muy rudimentario pero voy crudo en java xD
clase teclado adjuntada