Boa tarde Srs. Mais uma vez venho pedir a orientação de vocês. No programa abaixo tenho de digitar uma frase e o método set deve excluir as palavras duplicadas mas não estou conseguindo fazer com que seja excluida. Será que é na hora de converter a string para array ? é nesse momento que estou me enrolando.
Antecipadamente agradeço.
importjava.util.Arrays;importjava.util.Collection;importjava.util.HashSet;importjava.util.List;importjava.util.Scanner;importjava.util.Set;publicclassExercicio3{Scannerinput=newScanner(System.in);List<String>list;publicvoidexecuta(){System.out.println("Digite uma frase: ");Stringfrase=input.nextLine();list=Arrays.asList(frase);System.out.printf("Frase: %s\n",list);naoDuplicadas(list);}privatevoidnaoDuplicadas(Collection<String>collection){//cria um HashSetSet<String>set=newHashSet<String>(collection);System.out.println("\nNão duplicadas são: ");for(Strings:set)System.out.printf("%s ",s);System.out.println();}publicstaticvoidmain(String[]args){Exercicio3entrada=newExercicio3();entrada.executa();}}
Desculpe se estou falando besteira. Mas o Set não é para excluir as palavras duplicadas e o TreeSet as ordena ? O que não sei se estou fazendo direito é a transformação de String para array de String.
Abs,
nel
Paulo Mour?:
Desculpe se estou falando besteira. Mas o Set não é para excluir as palavras duplicadas e o TreeSet as ordena ? O que não sei se estou fazendo direito é a transformação de String para array de String.
Abs,
Sim, a realidade é que o Treeset é uma implementação da interface Set, com suas peculiaridades, é claro.
Se eu fizer isso:
Stringfrase="Joao Carlos da Costa";List<String>list=Arrays.asList(frase);for(Stringvalor:list){System.out.println("Item: "+valor);}
Ele simplesmente imprimi a própria String.
Talvez seja isso que você queira:
String frase = "Joao Carlos da Costa";
char[] array = frase.toCharArray();
Se quer uma lista de palavras (frases), é só instanciar um List e ir adicionando as frases que desejar.
diego.sas
Paulo Mour?:
Boa tarde Srs. Mais uma vez venho pedir a orientação de vocês. No programa abaixo tenho de digitar uma frase e o método set deve excluir as palavras duplicadas mas não estou conseguindo fazer com que seja excluida. Será que é na hora de converter a string para array ? é nesse momento que estou me enrolando.
Antecipadamente agradeço.
importjava.util.Arrays;importjava.util.Collection;importjava.util.HashSet;importjava.util.List;importjava.util.Scanner;importjava.util.Set;publicclassExercicio3{Scannerinput=newScanner(System.in);List<String>list;publicvoidexecuta(){System.out.println("Digite uma frase: ");Stringfrase=input.nextLine();list=Arrays.asList(frase);System.out.printf("Frase: %s\n",list);naoDuplicadas(list);}privatevoidnaoDuplicadas(Collection<String>collection){//cria um HashSetSet<String>set=newHashSet<String>(collection);System.out.println("\nNão duplicadas são: ");for(Strings:set)System.out.printf("%s ",s);System.out.println();}publicstaticvoidmain(String[]args){Exercicio3entrada=newExercicio3();entrada.executa();}}
Bom dia Paulo Mour.
Pelo oque entendi, você precisaria excluir as palavras repetidas.
Mas na forma em que implementou, está criando uma lista com uma única posição.
No entanto não terá repetição.
Se quer quebrar a frase digitada em palavras tera que usar o split "(quebrando por espaço por exemplo)".
publicvoidexecuta(){System.out.println("Digite uma frase: ");Stringfrase=input.nextLine();list=Arrays.asList(frase.split(" "));System.out.printf("Frase: %s\n",list);naoDuplicadas(list);}
Vê se isso te ajuda.
Flw
E
evefuji
só aumentando um pouco a dica do diego.sas
publicvoidexecuta(){System.out.println("Digite uma frase: ");Stringfrase=input.nextLine();Patternp=Pattern.compile("[ |,|\.|;|\!|?]");list=Arrays.asList(frase.split(p));System.out.printf("Frase: %s\n",list);naoDuplicadas(list);}
Não testei, mas deve funcionar.
Paulo_Mour
Srs. obrigado,
Com a dica do Diego funcionou da forma como eu queria, faltou o método split. Para confirmar a quebra da frase, no fim do método naoDuplicadas dei um set.size e retornou o nº de palavras no array. Da forma como o Nel e o evefuji sugeriram não funcionou como eu queria mas de qualquer forma me ajudaram a entender o procedimento.
Mais uma vez obrigado a todos.
Abs,
diego.sas
Fala Paulo, você tem que editar a 1ª msg para resolvido.
Abraços.