40) Calculadora

import java.util.Scanner;

public class Parser {

public static void main(String[ ] args){

String str = “”;
Scanner in = new Scanner(System.in);
Calculadora C= new Calculadora( );

System.out.print(“Ingrese la expresión regular:”);
str = in.nextLine( );

if(str.substring(0,1).equals(“=”)&& str.length() > 1) {

C.setValor(str);
Double valor = C.getResultado( );
if(valor !=null) {

System.out.println(“El resultado obtenido es: ” + valor.doubleValue());

}
else {

System.out.println(“La expresión: \”” + str + “\” no se puede evaluar !!”);

}

}
else{

System.out.println(“La expresión: \”” + str + “\” no se puede evaluar !!”);

}

}

}

Calculadora Resultado

===============================================================

import java.util.ArrayList;

public class Calculadora {

private ArrayList<String> Numeros;
private ArrayList<String> Operador;
private Double Resultado;

public Calculadora( ){

Numeros = new ArrayList<String>( );
Operador = new ArrayList<String>( );
Resultado = new Double(0);

}

public void setValor(String str) {

String copy = str.substring(1,str.length( ));
int i=0;
do{

char [ ]cadena = copy.toCharArray();

switch(cadena[i]){

case ‘+’: Numeros.add(copy.substring(0,i));

Operador.add(“+”);
copy = copy.substring(i+1);
i = 0;
break;

case ‘-‘: Numeros.add(copy.substring(0,i));

Operador.add(“-“);
copy = copy.substring(i+1);
i = 0;
break;

case ‘/’: Numeros.add(copy.substring(0,i));

Operador.add(“/”);
copy = copy.substring(i+1);
i = 0;
break;

case ‘*’: Numeros.add(copy.substring(0,i));

Operador.add(“*”);
copy = copy.substring(i+1);
i = 0;
break;

default: i++;

if(i == copy.length()){

Numeros.add(copy);
copy = null;

}
break;

}

}while (copy != null);

}

private void getProcesar( ){

double resultado = 0;
int i = 0;
int j = 0;
boolean paso = true;

while(j < Operador.size( )){

double v1 = 0;
double v2 = 0;
if (paso){

String s1 = Numeros.get(i).toString( );
String s2 = Numeros.get(i+1).toString( );

try{

v1 = Double.parseDouble(s1);
v2 = Double.parseDouble(s2);

}
catch(NumberFormatException N){

Resultado = null;
return;

}
catch(Exception E) {

Resultado = null;
return;

}
i+=2;

}
else{

String s2 = Numeros.get(i).toString();
v1 = 0;
try {

v2 = Double.parseDouble(s2);

}
catch(NumberFormatException N) {

Resultado = null;
return;

}
catch(Exception E){
Resultado = null;
return;
}
i++;

}
if(Operador.get(j).toString().equals(“+”)) {

if(paso){
resultado = v1 + v2;
paso = false;

}
else{

resultado += v2;

}

}
else if(Operador.get(j).toString().equals(“-“)) {

if(paso){

resultado = v1 – v2;
paso = false;

}
else{
resultado -= v2;
}

}
else if(Operador.get(j).toString().equals(“*”)) {

if(paso){

resultado = v1 * v2;
paso = false;

}
else {

resultado *= v2;

}

}
else if(Operador.get(j).toString( ).equals(“/”)) {

if(paso) {

resultado = v1 / v2;
paso = false;

}
else {

resultado /= v2;

}

}
j++;

}

Resultado = new Double(resultado);

}

public Double getResultado( ) {

getProcesar();
return Resultado;

}

}

Calculadora