Boa noite.
Agradecia alguma ajuda com um pequeno programa que me pediram para fazer. O meu problema é que não sei bem trabalhar com listas. O que consegui fazer até agora foi isto (e nem sei bem se está bem porque nem consigo pôr isto a imprimir…) :roll:
package pacote;
import javax.swing.JOptionPane;
public class menu {
public static int opcoes() {
int op;
do {
String a = "Menu"
+ "\n1 - Inserir frase"
+ "\n2 - Inverter palavras do texto"
+ "\n3 - Palavras não repetidas, frequência e ocorrência"
+ "\n4 - Eliminar palavra"
+ "\n5 - Eliminar palavras entre x e y"
+ "\n6 - Mover nós"
+ "\n7 - Copiar nós"
+ "\n8 - Imprimir listas"
+ "\n0 - Sair";
op = Integer.parseInt(JOptionPane.showInputDialog(a + "\nOpção? (0 a 8)"));
}
while ((op < 0) || (op > 8));
return op;
}
public static void main(String[] args) {
lista A = new lista();
lista B = new lista();
int opcao = opcoes();
while (opcao != 0) {
String frase;
switch (opcao) {
case 1: {
do
frase = JOptionPane.showInputDialog("Introduza frase: ");
while (frase.compareTo("") == 0);
A.recebefrase(frase);
break;
}
case 2: {
do
frase = JOptionPane.showInputDialog("Introduza frase: ");
while (frase.compareTo("") == 0);
B.recebefrase2(frase);
break;
}
case 3: {
break;
}
}
}
}
}
package pacote;
import java.util.*;
public class lista {
private No cab;
public void recebefrase(String frase){
String [] palavras = frase.split(" ");
for (int i = 0; i < palavras.length-1; i++){
this.inserirOrdenado(palavras[i]);
}
}
public void recebefrase2(String frase){
String [] palavras = frase.split(" ");
for (int i = 0; i < palavras.length-1; i++){
this.inserirInvertido(palavras[i]);
}
}
public void inserirOrdenado(String palavra){
No novo=new No(palavra);
No temp=cab;
while((temp.getProx()!=null)&&(temp.getProx().getPalavra().compareTo(novo.getPalavra())<0)){
temp=temp.getProx();
}
novo.setProx(temp.getProx());
novo.setAnt(temp);
temp.setProx(novo);
}
public void inserirInvertido(String palavra){
No novo=new No(palavra);
No temp=cab;
while((temp.getProx()!=null)&&(temp.getProx().getPalavra().compareTo(novo.getPalavra())>0)){
temp=temp.getProx();
}
novo.setProx(temp.getProx());
novo.setAnt(temp);
temp.setProx(novo);
}
public String imprimir()
{
String st = "";
if (cab.getProx() != cab)
{
No temp = cab.getProx();
while(temp != cab)
{
st += temp.getPalavra() + " ";
temp = temp.getProx();
}
}
else
st += "A Lista está vazia!";
return st;
}
}
package pacote;
public class No {
private String palavra;
private No prox;
private No ant;
public No(String palavra){
this.palavra=palavra;
}
public String getPalavra() {
return palavra;
}
public void setPalavra(String palavra) {
this.palavra = palavra;
}
public No getProx() {
return prox;
}
public void setProx(No prox) {
this.prox = prox;
}
public No getAnt() {
return ant;
}
public void setAnt(No ant) {
this.ant = ant;
}
}
Agradeço, desde já, qualquer ajuda.