Ai pessoal…
Meu prof da facul deu um trabalho pra gente fazer um programa em java
usando uma pilha. Esse programa deve ler uma palavra, empilhar as letras
e, em seguida, escrever a palavra escrita invertida. Ele naum quer
que fique usando muitos metodos prontos.
Estou com dificuldades de como fazer isso!
Se alguem puder me ajudar!
Agradeço desde ja!
Obrigado
Pilha: Inverter uma palavra!
14 Respostas
public String inverterPalavra(String palavra){
char pilha[]= new char[palavra.lentgh()]
for(int i=0; i<palavra.length(); i++){
pilha[i]= palavra.charAt(palavra.length()-i);//faz a inversão da ordem dos caracteres
}
String palavraInvertida= new String(pilha);
return palavraInvertida;
}
Acho q isso ae resolve…
Abraço!
Eu acho que seu professor quer que voce use a classe Stack.
Sobre Stacks:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Stack.html
Umas dicas:
Cria uma pilha e adicione cada letra da palavra a pilha.
Crie uma segunda pilha e va retirando a primeira letra da outra pilha(método pop()) e adicione a essa pilha.
Assim no final voce vai ter uma pilha com a palavra invertida.
package guj;
public class InverterStringSemAjuda {
public static void main(String...args){
char [] palavra = new char[20];
String entrada = "o que for digitado";
//isso seria uma maneira usando metodo pronto
//palavra = entrada.toCharArray();
//nao usando metodo pronto
//aqui agente passa a palavra pra pilha
for(int i=0;i<entrada.length();i++){
palavra[i] = entrada.charAt(i);
}
//aqui imprimimos invertido
for(int i=entrada.length();i>0;i--){
System.out.print(palavra[i-1]);
}
}
}
ou faz do jeito que o tspaulino disse…mas acho que vc ta vendo logica/java basico…seu professor vai estranhar…hehehehe
No seu caso, a lógica dos colegas, apesar de realmente inverter a palavra, não serve. Teu professor pediu explicitamente para você usar uma pilha, o que nenhum dos dois fizeram.
Já que seu professor não quer métodos prontos, comece implementando sua classe de pilha.
Nesse sentido, esse tópico pode te ajudar:
http://www.guj.com.br/posts/list/55235.java
Depois, basta empilhar letra-a-letra da palavra, e desempilhar tudo, montando a nova String. Ela será invertida pelo próprio funcionamento da pilha (primeira que entra - primeira letra - é a última que sai).
No seu caso, a lógica dos colegas, apesar de realmente inverter a palavra, não serve. Teu professor pediu explicitamente para você usar uma pilha, o que nenhum dos dois fizeram.Já que seu professor não quer métodos prontos, comece implementando sua classe de pilha.
Nesse sentido, esse tópico pode te ajudar:
http://www.guj.com.br/posts/list/55235.javaDepois, basta empilhar letra-a-letra da palavra, e desempilhar tudo, montando a nova String. Ela será invertida pelo próprio funcionamento da pilha (primeira que entra - primeira letra - é a última que sai).
Criar duas pilhas ter em uma a palavra impilhada e montar a outra desempilhando essa não resolve o problema?
Pelo menos foi isso que eu tentei falar.
Não duplique tópicos:
http://www.guj.com.br/posts/list/104526.java
No seu caso, a lógica dos colegas, apesar de realmente inverter a palavra, não serve. Teu professor pediu explicitamente para você usar uma pilha, o que nenhum dos dois fizeram.Já que seu professor não quer métodos prontos, comece implementando sua classe de pilha.
Nesse sentido, esse tópico pode te ajudar:
http://www.guj.com.br/posts/list/55235.javaDepois, basta empilhar letra-a-letra da palavra, e desempilhar tudo, montando a nova String. Ela será invertida pelo próprio funcionamento da pilha (primeira que entra - primeira letra - é a última que sai).
O Vini tem razão… Eu implementei o conceito de fila e não o de pilha…
Me desculpe colega,
“Herrar é umano”!!
Espero que consiga a sua resposta aqui no fórum!
Abraço!
Sim, funciona sim. Eu tava falando era dos algoritmos mesmo. Acho que me expressei mal.
Eu disse a mesma coisa.
eu acho que eu implementei o conceito de pilha…apenas dividi em 2 for, um para preenche e outro para imprimir…mas o primeiro que entra na pilha é o ultimo a sair…
ou nao?
Sim. A idéia está lá.
Mas o professor dele, com 99.9% de chance, vai querer ver a estrutura de dados pilha implementada. Métodos como push e pop com certeza terão de estar presentes no trabalho dele. Até por conta do outro exercício que ele postou aqui no fórum.
Se você fosse professor de estrutura de dados dele, provavelmente também exigiria. 
sim…isso é verdade…mas acho entao que o professor dele deveria pedri esses exercicios em C…
Por que em C? Por causa da manipulação de memória?
É melhor em uma linguagem OO, para o cara já estruturar uma classe de pilha, e ver como usar o polimorfismo.
Então, se for pela memória, seria melhor o C++. Aí tem as classes e o uso de memória, que fica mais claro no caso das listas encadeadas.
Agora, as 3 linguagens já tem isso implementado. Sendo que o Java e o C++ nas libs padrão da linguagem.
Acho que pra estudar estrutura de dados é melhor uma linguagem estruturada…Java ja tras tudo implementado lista,fila,pilha…Java tem tudo implementado…entao pra vc enteder realmente como funciona é mlhor uma linguagem estruturada…e pra entender polimorfismo ele estuda só OO que resolve…
São pontos de vistas diferentes…
Eu disse polimorfismo?
Nossa, eu tava viajando mesmo. Eu queria dizer encapsulamento.