Qual o problema?

11 respostas
diego.ldn

Olá pessoal

Estou tentando tirar os espaços em branco de uma String e colocar as letras dentro de um vetor...mas nao está dando certo

segue o codigo:
import java.util.*;

public class Exerc_01 {

	public static void main(String[] args) {

		Scanner leia = new Scanner(System.in);

		String frase;
		System.out.println("Escreva uma frase:");
		frase = leia.nextLine();

		int count = 0;

		for (int i = 0; i < frase.length(); i++) {
			char nospace = frase.charAt(i);
			if (nospace == ' ') {
				count++;
			}
		}

		char vetor[] = new char[frase.length() - count];
		

		for (int i = 0; i < vetor.length; i++) {

			char nospace = frase.charAt(i);
			if (nospace != ' ') {
				vetor[i] = nospace;
			}
		}

		for (int i = 0; i < vetor.length; i++) {
			System.out.print(vetor[i]);
		}

	}

}

11 Respostas

ismaelsoj

Cara… simplifica isso aí… depois que vc receber a frase, tire todos esses for, cont, etc e troque por essa linha de código:

frase.replaceAll(" ", "");

Com isso vc tira TODOS os espaços em branco e coloca um vazio no lugar

R

diego.ldn:
Olá pessoal

Estou tentando tirar os espaços em branco de uma String e colocar as letras dentro de um vetor…mas nao está dando certo

Boa tarde diego,

Fazendo da forma que nosso amigo acima citou, ficaria da seguinte forma:

Scanner leia = new Scanner(System.in);
		String frase;
		System.out.println("Escreva uma frase:");
		frase = leia.nextLine();
		String nospace = frase.replace(" ", "");
		char vetor[] = new char[nospace.length()];

		for (int i = 0; i < vetor.length; i++) {
				char letra = nospace.charAt(i);
				vetor[i] = letra;
				System.out.println(vetor[i]);
		}

O replace tem que ser usado antes da criação do vetor, caso contrario é criado um vetor com os espaços em branco, e depois quando for adicionar as letras ao vetor você vai adicionar sem os espaços em branco, o que vai gerar uma exception no método charAt() que vai tentar pegar uma letra que está vazia.

Nesse caso ismaelsoj é necessario o uso de um for para percorrer o vetor e adicionar as letras !

Espero ter ajudado! :smiley:

Falo.

ismaelsoj

RodrigoM91:
diego.ldn:
Olá pessoal

Estou tentando tirar os espaços em branco de uma String e colocar as letras dentro de um vetor…mas nao está dando certo

Boa tarde diego,

Fazendo da forma que nosso amigo acima citou, ficaria da seguinte forma:

Scanner leia = new Scanner(System.in);
		String frase;
		System.out.println("Escreva uma frase:");
		frase = leia.nextLine();
		String nospace = frase.replace(" ", "");
		char vetor[] = new char[nospace.length()];

		for (int i = 0; i < vetor.length; i++) {
				char letra = nospace.charAt(i);
				vetor[i] = letra;
				System.out.println(vetor[i]);
		}

O replace tem que ser usado antes da criação do vetor, caso contrario é criado um vetor com os espaços em branco, e depois quando for adicionar as letras ao vetor você vai adicionar sem os espaços em branco, o que vai gerar uma exception no método charAt() que vai tentar pegar uma letra que está vazia.

Nesse caso ismaelsoj é necessario o uso de um for para percorrer o vetor e adicionar as letras !

Espero ter ajudado! :smiley:

Falo.

É verdade, RodrigoM91… postei numa hora onde não podia exemplificar com código, mas tá certinho… :slight_smile:

A

Apesar das soluções acima funcionarem, acredito se tratar de trabalho de faculdade, portanto o uso dessas funções deve ser restrito.

O jeito mais simples sem limitação seria:

char[] vetor = frase.replace(" ", "").toCharArray()

No seu caso, há um pequeno problema de lógica na hora de preencher o array vetor.

Você precisa se lembrar que o tamanho de vetor.length é diferente de frase.length()

Quando faz um for para preencher o vetor, haverá casos em que tem que pular o caracter em frase…
Mas em vetor precisa manter a mesma posição…

Talvez seja mais simples utilizar um while, ao invés de for, e dois indices: um para vetor e outro para frase.

Assim quando contiver um espaço em frase, você incrementa o indice de frase e mantém o de vetor igual.

R

AbelBueno:
Apesar das soluções acima funcionarem, acredito se tratar de trabalho de faculdade, portanto o uso dessas funções deve ser restrito.

O jeito mais simples sem limitação seria:

char[] vetor = frase.replace(" ", "").toCharArray()

No seu caso, há um pequeno problema de lógica na hora de preencher o array vetor.

Você precisa se lembrar que o tamanho de vetor.length é diferente de frase.length()

Quando faz um for para preencher o vetor, haverá casos em que tem que pular o caracter em frase…
Mas em vetor precisa manter a mesma posição…

Talvez seja mais simples utilizar um while, ao invés de for, e dois indices: um para vetor e outro para frase.

Assim quando contiver um espaço em frase, você incrementa o indice de frase e mantém o de vetor igual.

Boa tarde AbelBueno,

Eu discordo da sua citação já que o tamanho do vetor vai ter o mesmo tamanho da frase sem os espaços em brancos, ou seja, o que não vai gerar nenhum erro, dessa forma pular caracteres não é necessário.

diego.ldn

Então pessol, obrigado pela atenção

O professor passou uma atividad:
Verificar se uma frase é um palindromo ou nao.

Exemplo de palindromo:
A cara rajada da jararaca

Se voce ler a frase da direita para esquerda, verá que ela tem o mesmo significado....

Eu fiz da seguinte forma:
import java.util.*;

public class Exerc_01 {

	public static void main(String[] args) {

		Scanner leia = new Scanner(System.in);

		String frase;
		System.out.println("Escreva a frase:");
		frase = leia.nextLine();

		String minus = frase.toLowerCase();

		String result = minus.replaceAll(" ", "");

		int j = result.length() - 1;

		boolean palindromo = true;

		for (int i = 0; i < result.length() && palindromo; i++) {

			char a = result.charAt(i);
			char b = result.charAt(j);

				if (a != b) {
					palindromo = false;
				}
			
			j--;
		}
		if (palindromo) {
			System.out.println("Palindromo");
		} else {
			System.out.println("Não é Palindromo");
		}

	}

}

O problema é que eu nao posso usar o replace all.

Por isso quero por dentro do vetor apenas as letras e nao os espaços...

A

RodrigoM91:

Boa tarde AbelBueno,

Eu discordo da sua citação já que o tamanho do vetor vai ter o mesmo tamanho da frase sem os espaços em brancos, ou seja, o que não vai gerar nenhum erro, dessa forma pular caracteres não é necessário.

Boa tarde RodrigoM91
Eu me referia a solução inicial proposta pelo diego.ldn e não ao seu código.

No código dele não é criado uma segunda string sem os espaços em branco.

Portanto, o tamanho do vetor (que é criado descontando os espaços em branco) fica diferente do tamanho da string frase.

Com isso não é possível utilizar apenas uma variável para percorrer os dois.

R

diego.ldn,

Porque você não pode utilizar o replace ?

Falo !

R

AbelBueno:
RodrigoM91:

Boa tarde AbelBueno,

Eu discordo da sua citação já que o tamanho do vetor vai ter o mesmo tamanho da frase sem os espaços em brancos, ou seja, o que não vai gerar nenhum erro, dessa forma pular caracteres não é necessário.

Boa tarde RodrigoM91
Eu me referia a solução inicial proposta pelo diego.ldn e não ao seu código.

No código dele não é criado uma segunda string sem os espaços em branco.

Portanto, o tamanho do vetor (que é criado descontando os espaços em branco) fica diferente do tamanho da string frase.

Com isso não é possível utilizar apenas uma variável para percorrer os dois.

Boa tarde AbelBueno,

Perdão então cara pensei que você estava falando do exemplo que eu dei…

Realmente então eu concordo com a sua citação … :smiley:

Falo!

diego.ldn

Ainda continua não dando certo =(

import java.util.*;

public class Exerc_01 {

	public static void main(String[] args) {

		Scanner leia = new Scanner(System.in);

		String frase;
		System.out.println("Escreva uma frase:");
		frase = leia.nextLine();

		int count = 0;

		for (int i = 0; i < frase.length(); i++) {
			char nospace = frase.charAt(i);
			if (nospace == ' ') {
				count++;
			}
		}

		char vetor[] = new char[frase.length() - count];

		int j = 0;
		for (int i = 0; i < vetor.length; i++) {

			char nospace = frase.charAt(i);
			if (nospace != ' ') {
				vetor[j] = nospace;
				j++;
			}
		}

		for (int i = 0; i < vetor.length; i++) {
			System.out.print(vetor[i]);
		}

	}

}
diego.ldn

vlw galera

já resolvi o problema

Criado 4 de junho de 2011
Ultima resposta 8 de jun. de 2011
Respostas 11
Participantes 4