-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathstacksArray.java
More file actions
56 lines (49 loc) · 1.47 KB
/
stacksArray.java
File metadata and controls
56 lines (49 loc) · 1.47 KB
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
public class StacksArray
{
static int jerarquia(char caracter){
switch (caracter){
case '+':
return 1;
case '-':
return 1;
case '*':
return 2;
case '/':
return 2;
case '^':
return 3;
default:
return 4;
}
}
static String convertir(String expresion){
String nueva="";
stacks stacks=new stacks();
for (int i=0;i<expresion.length();i++){
char car=expresion.charAt(i);
if(Character.isLetterOrDigit(car)){
nueva+=car;
}else if(car=='('){
stacks.push(String.valueOf(car));
} else if (car == ')') {
while (!stacks.empty() && stacks.peek() != "(")
nueva += stacks.pop();
if (!stacks.empty() && stacks.peek() != "(")
return "Expresión inválida";
else
stacks.pop();
}else{
while (!stacks.empty() && jerarquia(car) <= jerarquia(stacks.peek().charAt(0)))
nueva += stacks.pop();
stacks.push(String.valueOf(car));
}
}
while(!stacks.empty()){
nueva+=stacks.pop();
}
return nueva;
}
public static void main(String[] args) {
System.out.println(convertir("5+5"));
}
}