Java - Ayuda en calculadora

   
Vista:
Imágen de perfil de Viviana

Ayuda en calculadora

Publicado por Viviana vivixpxndix@gmail.com (5 intervenciones) el 04/03/2015 05:16:49
Hola, tengo un mega problema, he intentado resolverlo pero no he podido, tengo un método que recibe un char como parámetro del teclado (tengo entendido que me regresa el ASCII de la tecla), y tengo dos pilas, una de número y otra de operadores, como sabemos, los operadores llevan una precedencia y la puse usando un HashMap, en el método meto el operador a la pila, pero viendo primero su precedencia, me marca un error al comparar y no se como resolver, dejo parte del código y espero puedan ayudarme .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
public class Evaluador {
	Stack<Double> num=new Stack<Double>();
	Stack<Character> op=new Stack<Character>();
	Map<Character,Integer>inprec;
	Map<Character,Integer>outprec;
	double registro=0;
	String signo;
	Estado estado=Estado.INI;
	int par_cont;
 
	Evaluador(){
		inprec=new HashMap<Character,Integer>();
		inprec.put('(', 0);
		inprec.put('+', 1);
		inprec.put('-', 1);
		inprec.put('/', 2);
		inprec.put('*', 2);
		outprec=new HashMap<Character,Integer>();
		outprec.put('(', 3);
		outprec.put('+', 1);
		outprec.put('-', 1);
		outprec.put('/', 2);
		outprec.put('*', 2);
 
	}//CloseContructor
 
public void opera (char ope){
    	if(op.peek()==null || inprec.get(op.peek())<inprec.get(ope)){
    		log("Operador metido a la pila");
    	}else{
    		if(inprec.get(op.peek())>inprec.get(ope)){
    			double num1=num.pop();
         		double num2=num.pop();
         		char oper=op.pop();
 
    	    	if(oper=='+'){
    	    		registro=num2+num1;
        			num.push(registro);
        			log("Operador de suma");
         		}else if(oper=='-'){
        			registro=num2-num1;
         			num.push(registro);
        			log("Operador de resta");
        		}else if(oper=='/'){
        			registro=num2/num1;
        			num.push(registro);
          		}else if(oper=='*'){
    		    	registro=num2*num1;
    			    num.push(registro);
    		    }
    	    }
    	}
	}
}
 
//Hay omision de los demás métos
/**Clase de la calculadora(ventana)*/
 
public void keyPressed(KeyEvent evt) {
		char C;
		C=evt.getKeyChar();
		if(C==KeyEvent.VK_ENTER){
			C='=';
		}
		if(C==KeyEvent.VK_DELETE || C==KeyEvent.VK_CLEAR){
			C='c';
		}
		if(C>=48 && C<=57){
			eva.procesa(C);
 
		}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda en calculadora

Publicado por Andrés (231 intervenciones) el 06/03/2015 05:40:58
Podriamos revisar como hacerlo, pero si puedes revisa este libro: An Introduction to Computer Science: An Algorithmic Approach ahi viene lo que necesitas cuando quiere hacer una calculadora.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Viviana

Ayuda en calculadora

Publicado por Viviana vivixpxndix@gmail.com (5 intervenciones) el 06/03/2015 06:00:23
Hola, gracias por responder, enseguida revisé el libro, pero no hallé respuesta a mi problema :(
Ya intente mucho y no sé cuál es el error. :C
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda en calculadora

Publicado por Andrés (231 intervenciones) el 06/03/2015 06:43:36
Mandame tu código fuente completo ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Viviana

Ayuda en calculadora

Publicado por Viviana (5 intervenciones) el 09/03/2015 15:27:31
Aquí está, espero por fa puedas ayudarme!! Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda en calculadora

Publicado por Andrés andres.mella.romero@gmail.com (231 intervenciones) el 09/03/2015 17:44:09
Dónde lo subiste?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Viviana

Ayuda en calculadora

Publicado por Viviana vivixpxndix@gmail.com (5 intervenciones) el 10/03/2015 19:37:21
Lo siento, no puedo subir el archivo :( Tarda demasiado en cargar, te parececría si te lo mando por correo??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda en calculadora

Publicado por Andrés andres.mella.romero@gmail.com (231 intervenciones) el 10/03/2015 19:50:23
si, mandalo ;) andres.mella.romero@gmail.com, hazle un clean antes y luego lo comprimes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Viviana

Ayuda en calculadora

Publicado por Viviana (5 intervenciones) el 06/03/2015 06:02:39
Hola, gracias por responder, enseguida revisé el libro, pero no hallé respuesta a mi problema :(
Ya intente mucho y no sé cuál es el error. :C
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar