Comparação de emails

11 respostas
JorjaoCorreia

Bom dia

Estou fazendo um exercicio no qual um usuário informa o seu email, e o sisteminha precisa validar o email, ele precisa verificar se o email possui espaços, se possuir será enviada uma msg de erro, ele precisa verificar tb se o email possui 1 ou mais ou não possui @, caso possuir mais que um ou nenhum o programinha precisa enviar uma msg de erro falando que deve conter um @, ai que está o problema, eu coloco apenas um @ e a msg de erro é enviada de qualquer forma, independente se eu coloco 1 ou nenhum ou mais, vou colocar o código abaixo:

if (email.indexOf("@") != 1) {
				JOptionPane.showMessageDialog(null,"O email deve conter um @","Erro", 0);
				System.exit(0);
			}

alguém sabe se esta comparação está certa?

Obrigado.

11 Respostas

pmlm
if (email.indexOf("@") != 1) {

Não quererás dizer -1?

JorjaoCorreia

iae cara =)

pq menos 1? :?

P

http://www.devx.com/tips/Tip/28334

pmlm

http://java.sun.com/javase/6/docs/api/java/lang/String.html#indexOf(int)

"if no such character occurs in this string, then -1 is returned. "

Já agora, se só estás a comparar um char, deves usar ‘@’ e não “@”.

JorjaoCorreia

colocando o -1 se o usuário nao digitar nenhum @ ele envia a msg, está resolvida uma parte do problema, para caso o usuario digite mais de uma @ eu estou colocando assim:

if (email.indexOf('@') == -1 || email.indexOf('@') > 1 ) {
				JOptionPane.showMessageDialog(null,"O email deve conter um @","Erro", 0);
				System.exit(0);
			}

mais assim mesmo que for digitado o email corretamente ele envia a mensagem =x

pozzo, vlws veio mais nao tem nada a ver com o que eu preciso ;x

pmlm, vlws veio, eu mudei pra ’ ’ ali mais continua a mesma coisa.

;(

T

Crie um método que conte quantos ‘@’ existem na string. Um email é válido se houver apenas 1 ‘@’.
Para contar, basta percorrer os caracteres da string (use charAt para obter 1 caracter)

Seu professor não deve ter ensinado expressões regulares; se o fez, você pode usar uma expressão regular para validar seu email. Procure esse tipo de validação na Internet.

P

Então Jorjao, se você for ver, a solução com expressão regular que te passei resolve o problema da validação do e-mail. Inclusive o problema das duas arrobas, e de forma mais elegante e limpa. Sendo que pode ser encapsulada em uma classe e reaproveitada para outras validações (cpf, cnpj), basta alterar a expressão regular.

pmlm

thingol:
Crie um método que conte quantos ‘@’ existem na string. Um email é válido se houver apenas 1 ‘@’.
Para contar, basta percorrer os caracteres da string (use charAt para obter 1 caracter)

Seu professor não deve ter ensinado expressões regulares; se o fez, você pode usar uma expressão regular para validar seu email. Procure esse tipo de validação na Internet.

Em vez de ver caracter a caracter, podes ainda comparar indexOf com lastIndexOf. Se forem iguais (e maiores que -1) então tens um e só um caracter @

Marky.Vasconcelos

Uma regex acho que também resolveria.

Não seu muito mas seria algo como.

[/w*@/w*./w*]

pmlm

Certo. Se é pra funcionar, põe regex e não pensas mais no assunto.
Agora se é um exercício inicial de Java, o objectivo é ir aprendendo a trabalhar com as API básicas (neste caso String) e os seus métodos.

Marky.Vasconcelos

Ahh… não imaginei que fosse só um exercicio inicial.

Para falar a verdade eu ia postar exatamente o que voce falou. Mas como já havia responder pensei em outra solução.

Criado 29 de abril de 2009
Ultima resposta 29 de abr. de 2009
Respostas 11
Participantes 5