[RESOLVIDO] Ajuda resolução de problema com String

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?!