Poligno 1 Denunciar post Postado Março 6, 2016 Olá galera,gostaria de saber como implementar corretamente o comando split,que pelo o que eu entendi ele quebra uma string até o lugar definido.Tentei usar esse comando para isso mas acho que estou fazendo algo errado,segue o meu código: package javaapplication1;import java.util.Scanner;public class JavaApplication1 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //int cont=0; System.out.println("Digite uma frase:"); //String nome = scan.nextLine(); String nome = ("Digite uma frase:"); String array[] = new String[10]; array = nome.split(" "); System.out.println(array); } o resultado foi esse: http://prntscr.com/aby1kk Grato. Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Março 7, 2016 O problema é a forma que está tentando imprimir o conteúdo do array. Use: String nome = ("Digite uma frase:"); String array[] = nome.split(" "); System.out.println(Arrays.toString(array)); ou: String nome = ("Digite uma frase:"); String array[] = nome.split(" "); for(String each : array) System.out.println(each); ou: String nome = ("Digite uma frase:"); String array[] = nome.split(" "); for(int i = 0; i < array.length; i++) System.out.println(array[i]); Compartilhar este post Link para o post Compartilhar em outros sites
Poligno 1 Denunciar post Postado Março 12, 2016 A dúvida principal foi respondida,mas me surgiu outra em relação ao comando .split, então vou reaproveitar o tópico. Tenho que fazer um algoritmo que diga quantas palavras repetidas estão na em uma frase,porém se eu usar como padrão de separação de palavras '.split(" ")' (espaço) e inputar a seguinte frase "ñ sei se vamos nem sabemos onde vamos" ele irá reconhecer,no código a baixo,que 'vamos' está repetida,porém se eu inputar "ñ sei se vamos, nem sabemos onde vamos" ele ñ 'reconhece' um dos 'vamos' já que um deles na verdade é "vamos," .A dúvida é: como resolver isso,há alguma forma de passar para o .split mais de um caractere para usar como ponto de separação de palavras? import java.util.Scanner; public class JavaApplication1 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //int cont=0; System.out.println("Digite uma frase:"); String frase = scan.nextLine(); System.out.println("Digite um nome:"); String nome = scan.nextLine(); palindromo(nome); CharBranco(frase); System.out.println("O numero de espaços em branco é:" + CharBranco(frase)); palavras_iguais(frase); concat(frase); } public static void palavras_iguais(String args) { String array[] = args.split(" "); //separa as palavras da string usando space como demarcador int cont = 0; int k; for (int i = 0; i < array.length; i++) { String aux = array[i]; //guarda a iº palavra da string for (k = i + 1; k < array.length; k++) { String aux3 = array[k]; //guarda as próximas palavra da string if (aux.equals(aux3)) { cont++; } } } System.out.println("há " + cont + " palavras iguais na frase"); } Grato! Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Março 12, 2016 Segundo a documentação do método split, ele aceita expressões regulares. Então ao invés de splittar por caractere em branco, use \W que significa qualquer caractere que não seja uma letra ou número ou um underline. import java.util.Arrays; import java.util.HashSet; public class Main { public static void main(String...args){ String frase = "ñ sei se vamos nem sabemos onde vamos"; System.out.println("Palavras iguais: " + palavrasIguais(frase)); } public static int palavrasIguais(String args){ String palavras[] = args.split("\\W+"); return palavras.length - new HashSet<>(Arrays.asList(palavras)).size(); } } OBS: Isso vai dar diferença de "vamos" para "Vamos"... uma solução é tornar todas as letras minúsculas antes de chamar o split: String palavras[] = args.toLowerCase().split("\\W+"); Explicando o que fiz: Primeiro criei um array com todas as palavras; Usei um objeto que implementa a interface "Set" que aceita somente valores únicos. Ou seja, qualquer valor duplicado é descartado. Assim teríamos um conjunto de palavras sem repetições. Subtrai o total de elementos no array "palavras" (contendo as repetidas) pelo tamanho do conjunto sem conter repetições. O mesmo método passo-a-passo: import java.util.Arrays; import java.util.HashSet; public class Main { public static void main(String...args){ String frase = "ñ sei se vamos nem sabemos onde vamos"; System.out.println("Palavras iguais: " + palavrasIguais(frase)); } public static int palavrasIguais(String args){ String palavras[] = args.split("\\W+"); HashSet<String> set = new HashSet<>(); set.addAll(Arrays.asList(palavras)); // adiciona todas as palavras e descarta o que já estiver no 'set'. int palavrasRepetidas = palavras.length - set.size(); return palavrasRepetidas; } } Compartilhar este post Link para o post Compartilhar em outros sites
Poligno 1 Denunciar post Postado Março 14, 2016 Brow,acho que ñ entendi...eu alterei no meu código a linha do split,trocando " " por "\\w" só que continua dando erro,sendo que agora ele conta mais palavras repetidas do que já tem,bem mais. PS:alguns comandos do teu código eu desconheço,é algum deles que está faltando no meu código? Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Março 15, 2016 \\W+ não \\W. Compartilhar este post Link para o post Compartilhar em outros sites