Tenho uma questão que não estou entendendo.
Observe o seguinte trecho de código em Java.
import java.util.Stack;
public class MyStack extends Stack {
public void push(int i){
super.push(new Integer(i));
}
public static void main (String[] args){
MyStack stack = new MyStack();
int item1 = 1;
int item2 = 0;
int item3 =4;
stack.push(item2);
stack.push(item1);
stack.push(item1 + item3);
item2 = ((Integer)stack.peek()).intValue();
stack.push(item3 * item3);
stack.push(3);
item1 = ((Integer)stack.peek()).intValue();
while (!stack.isEmpty()){
item1 = ((Integer)stack.peek()).intValue();
stack.pop();
System.out.println(item1);
}
}
}
A classe Stack, pertencente ao pacote java.util, implmenta uma estrutura do tipo LIFO (última a entrar, primeira a sair) e fornece as operações usuais push() e pop(). A classe disponibiliza ainda a operação peek() que retorna o elemento no topo da pilha sem removê-lo. A sequência de valores impressa pelo programa é:
[color=red]a) 5, 16, 1
b) 4, 16, 4, 0, 1
c) 5, 8, 5, 1,0
d) 5, 16, 5, 1, 0
e) 4, 0 4, 4 , 1
Resposta: d[/color]
Não entendi a resolução da questão.
Começa entrando nesta órdem: 015, a variável item2 recebe o valor do topo da pilha, depois entra no topo 16: (item3 * item3), na linha seguinte era para entrar 0, stack.push(item2), então porque entra 5 como está na órdem na resposta letra d?
Como resolver?
Obrigado