
Refactorizar código java
Publicado por s (3 intervenciones) el 13/02/2018 13:16:13
Como puedo refactorizar este código???
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
72
73
74
75
76
77
78
79
80
package calculadora;
class NodoPila {
public NodoPila(double dato, NodoPila abajo) {
this.dato = dato;
this.abajo = abajo;
}
public NodoPila abajo;
public double dato;
}
public class RPN {
public void pushPila(double nuevo_dato) {
NodoPila nuevo_nodo = new NodoPila(nuevo_dato, arriba);
arriba = nuevo_nodo;
}
public double popPila( ) {
double dato_arriba = arriba.dato;
arriba = arriba.abajo;
return dato_arriba;
}
public RPN(String commando) {
arriba = null;
this.commando = commando;
}
public double resultado( ) {
double a, b;
int j;
for(int i = 0; i < commando.length( ); i++) {
// si es un digito
if(Character.isDigit(commando.charAt(i))) {
double numero;
// obtener un string a partir del numero
String temp = "";
for(j = 0; (j < 100) && (Character.isDigit(
commando.charAt(i)) || (commando.charAt(i) == '.')); j++, i++) {
temp = temp + String.valueOf(commando.
charAt(i));
}
// convertir a double y añadir a la pila
numero = Double.parseDouble(temp);
pushPila(numero);
} else if(commando.charAt(i) == '+') {
b = popPila( );
a = popPila( );
pushPila(a + b);
} else if(commando.charAt(i) == '-') {
b = popPila( );
a = popPila( );
pushPila(a - b);
} else if(commando.charAt(i) == '*') {
b = popPila( );
a = popPila( );
pushPila(a * b);
} else if(commando.charAt(i) == '/') {
b = popPila( );
a = popPila( );
pushPila(a / b);
}
else if(commando.charAt(i) == '^') {
b = popPila( );
a = popPila( );
pushPila(Math.pow(a, b));}
else if(commando.charAt(i) == '%') {
b = popPila( );
a = popPila( );
pushPila(a%b);
} else if(commando.charAt(i) != ' ') {
throw new IllegalArgumentException( );
}
}
double val = popPila( );
if(arriba != null) {
throw new IllegalArgumentException( );
}
return val;
}
private String commando;
private NodoPila arriba;
}
Valora esta pregunta


0