Pila con java : inserta,elimina y muestra datos de una pila

Hola que tal chicos, les dejo un pequeño ejemplo con java sobre el uso de una pila, es algo sencillo pero muy ilustrativo asi que espero les sea útil, saludos

import java.io.*;
public class pilaO{
public static BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
public static String Pila[] = new String[4];
public static int cima = -1;
public static void main(String args[])throws IOException{
Menu();
}
public static void Menu()throws IOException{
System.out.println(“|||||||| Selecciona                   ||||||||”);
System.out.println(“|||||||| 1- Insertar letra o palabra  ||||||||”);
System.out.println(“|||||||| 2- Eliminar letra o palabra  ||||||||”);
System.out.println(“|||||||| 3- Imprimir pila             ||||||||”);
System.out.println(“|||||||| 0- Salir                     ||||||||”);
System.out.println(“||||||||||||||||||||||||||||||||||||||||||||||”);
System.out.println(“|||||||| Opcion: |||||||||||||||||||||||||||||||”);
int op = Integer.parseInt(entrada.readLine());
Opciones(op);
}
public static void Opciones(int op)throws IOException{
switch(op){
case 1: Insertar();
break;
case 2: Eliminar();
break;
case 3: Imprimir();
break;
case 0: System.exit(1);
break;
default:Menu();
break;
}
}
public static void Insertar()throws IOException{
System.out.print(“Escribe algo :”);
String dato = entrada.readLine();
Crear(dato);
}
public static void Crear(String dato)throws IOException{
if ((Pila.length-1)==cima){
System.out.println(“Pila Llena”);
Imprimir();
}
else{
++cima;
}
Agregar(dato);
}
public static void Agregar(String dato)throws IOException{
Pila[cima]=dato;
Menu();
}
public static void Imprimir()throws IOException{
for(int i=Pila.length-1;i>=0;i–){
if(Pila[i]!=null)
{
System.out.println(Pila[i]);
}
}
Menu();
}
public static void Eliminar()throws IOException{
if(cima== -1){
System.out.println(“Pila vacia” );
}
else{
Pila[cima] = null;
–cima;
}
Menu();
}
}