Código: 1 package pilha; 2 3 import javax.swing.JOptionPane; 4 5 public class Principal { 6 7 public static void main(String[] args) { 8 9 boolean continua = true true;; 10 boolean continua2 = true true;; 11 12 do { 13 try { 14 String txt = JOptionPane.showInputDialog( JOptionPane.showInputDialog("Digite "Digite a capacidade da pilha:" ); 15 int capacidade = Integer.parseInt(txt); 16 17 Pilha pilha = new Pilha(capacidade); 18 19 do { 20 try { 21 txt = JOptionPane.showInputDialog( JOptionPane.showInputDialog("Escolha "Escolha uma das opções do menu: \n\n" 22 + "1 - Inserir um dado na pilha. \n" 23 + "2 - Remover dado do topo da pilha. \n" 24 + "3 - Imprimir dado do topo da pilha. \n" 25 + "4 - Buscar dado na pilha. \n" 26 + "5 - Obter número de posições não alocadas. \n" 27 + "6 - Obter o tamanho da pilha. \n" 28 + "7 - Obter a capacidade da pilha. \n" 29 + "8 - Imprimir pilha. \n" 30 + "9 - Limpar todo o conteúdo da pilha. \n" 31 + "10 - Sair \n\n"); 32 int op = Integer.parseInt(txt); 33 34 while (op != 10) { 35 switch (op) { 36 case 1: 37 String dado = JOptionPane.showInputDia JOptionPane.showInputDialog( log("Digite "Digite o dado a ser inserido na pilha:"); pilha:" ); 38 try { 39 pilha.push(dado); 40 } catch (ArgumentoIlegalPilhaExceção ex) { 41 JOptionPane.showMessageDialog( null null,, ex.getMensagem()); 42 } catch (PilhaCheiaPilhaExceção ex) { 43 JOptionPane.showMessageDialog( null null,, ex.getMensagem()); 44 45 } 46 break ; 47 48 case 2: 49 try { 50 String removido = pilha.pop(); 51 JOptionPane.showMessageDialog( null,, "O dado " + removido + " que estava no topo da pilha, foi JOptionPane.showMessageDialog(null removido com sucesso!"); sucesso!" ); 52 } catch (PilhaVaziaPilhaExceção ex) { 53 JOptionPane.showMessageDialog( null,, ex.getMensagem()); JOptionPane.showMessageDialog(null 54 } 55 break ; 56 57 case 3: 58 try { 59 JOptionPane.showMessageDialog( null,, "O dado no topo da pilha é: " + pilha.top()); JOptionPane.showMessageDialog(null 60 } catch (PilhaVaziaPilhaExceção ex) { 61 JOptionPane.showMessageDialog( null null,, ex.getMensagem()); 62 } 63 break ; 64 65 case 4:
66 dado = JOptionPane.showInputDialog("Digite o dado a ser procurado:"); 67 68 if (pilha.buscaElemento(dado) == -1) { 69 JOptionPane.showMessageDialog( null, "Esse dado não está na pilha!" ); 70 } else { 71 JOptionPane.showMessageDialog(null, "A posição do dado " + dado + " na pilha é: " + pilha.buscaElemento(dado)); 72 } 73 break ; 74 75 case 5: 76 JOptionPane.showMessageDialog( null, "O número de posições não alocadas é: " + pilha.getPosNaoAloc()); 77 break ; 78 79 case 6: 80 JOptionPane.showMessageDialog( null, "O tamanho da pilha é: " + pilha.getSize()); 81 break ; 82 83 case 7: 84 JOptionPane.showMessageDialog( null, "A capacidade da pilha é de " + pilha.getCapacity() + " posições."); 85 break ; 86 87 case 8: 88 JOptionPane.showMessageDialog( null, "Pilha: \n\n" + pilha.imprimePilha()); 89 break ; 90 91 case 9: 92 try { 93 pilha.clear(); 94 JOptionPane.showMessageDialog( null, "Os dados que estavam na pilha, fora m removidos com sucesso!"); 95 } catch (PilhaVaziaPilhaExceção ex) { 96 JOptionPane.showMessageDialog( null, ex.getMensagem()); 97 } 98 break ; 99 } 100 txt = JOptionPane.showInputDialog("Escolha uma das opções do menu: \n\n" 101 + "1 - Inserir um dado na pilha. \n" 102 + "2 - Remover dado do topo da pilha. \n" 103 + "3 - Imprimir dado do topo da pilha. \n" 104 + "4 - Buscar dado na pilha. \n" 105 + "5 - Obter número de posições não alocadas. \n" 106 + "6 - Obter o tamanho da pilha. \n" 107 + "7 - Obter a capacidade da pilha. \n" 108 + "8 - Imprimir pilha. \n" 109 + "9 - Limpar todo o conteúdo da pilha. \n" 110 + "10 - Sair \n\n"); 111 op = Integer.parseInt(txt); 112 } 113 continua = false; 114 continua2 = false; 115 } catch (NumberFormatException e) { 116 JOptionPane.showMessageDialog( null, "Digite uma opção correta!"); 117 } 118 } while (continua2); 119 } catch (NumberFormatException e) { 120 JOptionPane.showMessageDialog( null, "Digite um valor correto!"); 121 } 122 } while (continua); 123 } 124 } 125
1 package pilha; 2 3 public class Pilha { 4 5 private int topo; 6 private int capacidade; 7 private String[] dados; 8 9 //Construtor. 10 public Pilha(int capacidade) { 11 this.topo = -1; 12 this.capacidade = capacidade; 13 this.dados = new String[capacidade]; 14 } 15 16 //Insere novo elemento no topo da pilha. 17 public void push(String dado) throws ArgumentoIlegalPilhaExceção, PilhaCheiaPilhaExceção { 18 /* 19 Funcionamento: 20 21 - Se pilha cheia, erro; 22 - Se o dado for null, vamos lançar uma exceção, iformando que a pilha 23 não aceita null como elemento válido. 24 - Se não, incremente o valor do topo; 25 - Coloque "valor" no vetor dados na posição topo. 26 */ 27 28 if (dado.equals("null")) { 29 throw new ArgumentoIlegalPilhaExceção("O elemento não pode ser nulo!"); 30 } 31 32 if (this.capacidade == this.topo + 1) { 33 throw new PilhaCheiaPilhaExceção("Pilha cheia: " + topo); 34 } 35 36 this.topo++; 37 this.dados[this.topo] = dado; 38 } 39 40 //Remove elemento do topo da pilha (se houver). 41 public String pop() throws PilhaVaziaPilhaExceção { 42 /* 43 Funcionamento: 44 45 - Se pilha vazia, erro; 46 - Caso contrário, armazene elemento do topo da pilha em variável auxiliar; 47 - Decremente o topo; 48 - Retorne o valor armazenado na variável auxiliar. 49 */ 50 51 if (this.topo == -1) { 52 throw new PilhaVaziaPilhaExceção("Pilha Vazia: " + topo); 53 } 54 55 String aux; 56 aux = this.dados[this.topo]; 57 this.dados[this.topo] = null; 58 this.topo--; 59 60 return aux; 61 } 62 63 //Retorna o elemento do topo da pilha. 64 public String top() throws PilhaVaziaPilhaExceção { 65 /* 66 Funcionamento: 67 * 68 - Se pilha vazia, erro;