Bom dia a todos,
Preciso resolver o seguinte problema.
Tenho uma String assim.
String frase = “Eu quero aprender Java agora.”;
Sendo que eu preciso separar essa frase em até 15 caracteres, sem cortar a palavra ao meio.
Cortando ao meio sairia assim
Eu quero aprend
er Java agora.
Mas a saida tem que ser assim.
Eu quero
aprender Java
agora.
Pois bem.
Até o momento eu fiz um for para contar os espaços na frase.
/**
* Busca os espaços dentro da frase.
*/
for(int i = 0; i < frase.length(); i++) {
if(frase.charAt(i) == ' ') {
espaco++;
}
}
e fiz outro pra percorrer o vetor.
/**
* Percorrendo todo o vetor de String
*/
for(int x = 0; x < vetorPalavras.length; x++) {
saida += vetorPalavras[x];
if(saida.length() <= 15) {
saida += vetorPalavras[x + 1];
System.out.println(":::" + saida);
} else {
//System.out.println("maior que 15 char " + saida);
}
}
Só que a saida, tá ruim.
Quem puder me ajudar, agradeço.
Amigo, sou novo no java mas pelo o que eu sei, o método split() faz isso pra você.
String[] s = SuaString.split(" ");
o split retornará um array de string e ai é só usar um “for” para apresentar o resultado.
Sua intenção é boa @adrianomilitao.
Porém, usando o split(" "); a String vai ser quebrada em palavras, sendo que a cada espaço ele irá inserir no array o intervalo entra um espaço em branco e outro.
No caso do problema do amigo é um tanto trabalho, pois terá que utilizar indexOf para pegar posições e substring para pegar trechos de código da String e tratar.
Ficará bem complexo.
kkkk…vdd, eu que entendi errado.O que eu propus não resolve o problema.
Desculpe o equívoco.
1 curtida
Amigos,
Complexo de entender, mas acho que to quase lá.
Por eu ser novato a gente vai quebrando a cabeça.
Mas vamos lá, abaixo o código inteiro.
public static void main(String[] args) {
String saida = "";
int espaco = 0;
int cont = 0;
int soma = 0;
String frase = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
String[] vetorPalavras = frase.split(" ");
System.out.println("Total Caracteres " + frase.length());
System.out.println("Vetor: " + vetorPalavras.length);
/**
* Busca os espaços dentro da frase.
*/
for(int i = 0; i < frase.length(); i++) {
if(frase.charAt(i) == ' ') {
espaco++;
}
}
/**
* Elementos do Vetor
*/
for(String elementos : vetorPalavras) {
//System.out.println(elementos.length());
if(elementos.length() <= 15) {
soma += elementos.length();
if(soma <= 15) {
saida += elementos;
saida += " ";
//System.out.println("ççç " + saida);
}
}
System.out.println("ççç " + saida);
/*
if(elementos.length() == 15) {
saida += elementos;
saida += " ";
}*/
}
System.out.println("!!!" + saida);
/**
* Percorrendo todo o vetor de String
*/
for(int x = 0; x < vetorPalavras.length; x++) {
}
System.out.println("Espaços: " + espaco);
}
}
Eu uso o split para separar as palavras.
Depois uso outro for em busca dos elementos (palavras) digitadas.
Ai eu começo o tratamento, porém, tá dando alguns erros que não to conseguindo prosseguir, por enquanto, quem souber me ajudar, agradeço.
Amigo, fiz de um jeito aqui e está funcionando. Sou novo no java também, por isso acho que deve ter um jeito mais fácil,
public class Palavras {
public static void main(String[] args) {
separa("Eu quero aprender Java agora");
}
private static void separa(String s){
String saida = "";
if (s.length() < 15){
System.out.println(s);
return;
}else{
char[] palavras = s.toCharArray();
for(int x = 15; x >= 0; x--){
if(palavras[x] == ' '){
saida = s.substring(0, x);
System.out.println(saida);
separa(s.substring(x+1, s.length()));
return;
}
}
}
}
}
1 curtida
Adriano Militão,
Você fez exatamente o que eu precisava, mas eu quero aprender e entender o que você fez. A sua solução foi sensacional.
Obrigado e me add no face cara…
Grande abraço, mas eu vou fazer o meu e descobrir aonde tá errado, dando umas olhadas na sua solução.
Parabéns pelo esforço @adrianomilitao
Por mais que você diga que não tem muito conhecimento, correu atrás e resolveu.
@marcos.menezes pode encerrer este tópico já que encontrou uma solução.
[]'s
Como que eu encerro o tópico?!