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:
[code]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]);
}
}
}
[/code]
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
[quote=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[/quote]
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!
Falo.
[quote=RodrigoM91][quote=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[/quote]
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!
Falo.[/quote]
É verdade, RodrigoM91… postei numa hora onde não podia exemplificar com código, mas tá certinho…
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.
[quote=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.
[/quote]
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.
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:
[code]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");
}
}
}
[/code]
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…
[quote=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.[/quote]
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.
diego.ldn,
Porque você não pode utilizar o replace ?
Falo !
[quote=AbelBueno][quote=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.[/quote]
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.[/quote]
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 …
Falo!
Ainda continua não dando certo =(
[code]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]);
}
}
}
[/code]