package tad;
/**
*
* @author Davi #
*/
public class Stack {
String elementos[];
int topo;
public Stack() {
elementos = new String[20];
topo = -1; //posicao invalida do vetor;
}
public void push(String e) {
if (isFull()) {
throw new RuntimeException("Pilha cheia");
}
topo++;
elementos[topo] = e;
}
public String pop() {
if (isEmpty()) {
throw new RuntimeException("Pilha vazia");
}
String e;
e = elementos[topo];
topo--;
return e;
}
public boolean isFull() {
return (topo == 9);
}
public String top() {
if (isEmpty()) {
throw new RuntimeException("Pilha vazia");
}
return elementos[topo];
}
public boolean isEmpty() {
return topo == 1;
}
}
package app;
import tad.Stack;
public class AppStack {
public static void main(String[] args) {
Stack p = new Stack();
System.out.println("Entregas da PIZZARIA UAM.");
System.out.println("");
p.push("Primeira entrega: Portuguesa ");
p.push("Segunda entrega: Frango com catupiry ");
p.push("Terceira entrega: Calabresa ");
p.push("Quarta entrega: Quatro queijos ");
p.push("Quinta entrega: Peperoni ");
p.push("Sexta entrega: Marguerita");
p.push("Setima entrega: Brócilis");
p.push("Oitava entrega: Napolitano");
p.push("Nona entrega: Banana");
p.push("Decima entrega: maca");
while (p.isEmpty() == false) {
System.out.println(p.pop());
}
}
}
Ih rapaiz, faltou o erro.
run:
Entregas da PIZZARIA UAM.
Decima entrega: maca
Nona entrega: Banana
Oitava entrega: Napolitano
Setima entrega: Brócilis
Sexta entrega: Marguerita
Quinta entrega: Peperoni
Quarta entrega: Quatro queijos
Terceira entrega: Calabresa
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
===========================
Erro: a primeira e segunda não estão sendo impressas na saida.
Nâo deveria ser topo == -1
?
Sim
kkkkkkkk
valeu!!!
Lucas, como fica essa pilha dinâmica?
Veja (montei aqui agora, talvez dê para melhorar):
public class Main {
public static void main(String[] args) throws Exception {
Stack stack = new Stack();
stack.push("A");
stack.push("B");
stack.push("C");
stack.push("D");
stack.push("E");
while (stack.isEmpty() == false) {
System.out.println(stack.pop());
}
}
private static class Stack {
private Item topo;
public void push(String valor) {
if (topo == null) {
topo = new Item(valor, null);
} else {
topo = new Item(valor, topo);
}
}
public String pop() {
if (isEmpty()) {
throw new RuntimeException("Pilha vazia");
}
String valor = topo.getValor();
topo = topo.getAnterior();
return valor;
}
public String getTopo() {
if (isEmpty()) {
throw new RuntimeException("Pilha vazia");
}
return topo.getValor();
}
public boolean isEmpty() {
return topo == null;
}
}
private static class Item {
private String valor;
private Item anterior;
public Item(String valor, Item anterior) {
this.valor = valor;
this.anterior = anterior;
}
public String getValor() {
return valor;
}
public Item getAnterior() {
return anterior;
}
}
}
Lucas, esse código é uma pilha dinâmica, certoo?
Se dinâmica for em relação ao tamanho da pilha, sim.
Mas eu não preciso da classe NO?
Veja a classe Item
no meu exemplo. É que fiz o exemplo num arquivo soh (com inner classes).
Se eu quiser que o usuário informe o valor da String e o PUSH pegue essa informação, como ficaria, Lucas?
Eu quero que o usuário vá digitando os sabores das pizzas e no final o programa desempilhe certinho. Testei seu código e tá bom, tenho que testar as exceções.
Se for para estudo, vc pode usar a classe Scanner para ler a entrada do teclado.
Scanner teclado = new Scanner(System.in);
String pizzaSabor;
System.out.println("Informe o primeiro sabor da pizza a ser entregue: ");
pizzaSabor=teclado.next();
Veja um exemplo:
Stack stack = new Stack();
try (Scanner scanner = new Scanner(System.in)) {
String entrada = null;
while (true) {
entrada = scanner.next();
if ("FIM".equals(entrada)) {
break;
}
stack.push(entrada);
}
}
Ola, espero que estajam todos bem!
Eu gostaria de saber como escrever x ao quadrado na tela do jframe?
O que é “tela do jframe” pra você?
Quer escrever em qual componente exatamente?