uso do charAt()

Java

09/04/2009

bom dia, estou com um probleminha...... preciso percorrer uma string e comparar seus valores, para isso tenho q usar o metodo charAt(), porem estou enfrentando alguns probleminhas...................abaixo segue o codigo: boolean achou_arroba, achou_ponto = false; for(int i = 2; i <= txtEmail.getText().trim().length()-1;i++){ if(txtEmail.getText().trim().charAt(i) == "@"){ achou_arroba = true; for(int j = i+1; j <= txtEmail.getText().trim().length()-1; j++){ if(txtEmail.charAt(j) == "."){ achou_ponto = true; } } } } como podem ver, coloquei as comparacoes de forma diferente, mas é proposital e ai segue os erros: o primeiro fala: operator == cannot be applied to char,java.lang.String, entao mudo para equals() e ai: char cannot be dereferenced e o segundo erro e: cannot resolve symbol method charAt (int), se alguem puder me dar uma força agradeço...... GAbriel
Gfilho

Gfilho

Curtidas 0

Respostas

João Bier

João Bier

09/04/2009

tente assim:
boolean achou_arroba, achou_ponto = false;
for(int i = 2; i <= txtEmail.getText().trim().length()-1;i++){
  if(txtEmail.getText().trim().charAt(i) == '@'){ 
    achou_arroba = true;
  }
}
[]'s :!:
GOSTEI 0
Rodrigo_corinthians

Rodrigo_corinthians

09/04/2009

O primeiro erro acontece porq vc usa as "" na condição, charAt retorna um "char", use as '' simples. ***
public class ClasseMain {

	public static void main(String[] javaFree) {

		String email = "contato@javafree.com.br";
		
		boolean achouArroba = false, achouPonto = false; 
		
		if(email != null && email.length() > 0){
			
			for(int i = 0; i < email.length(); i++){
				
				if(email.charAt(i) == '@'){
					
					achouArroba = true;
					
				}
				
				if(email.charAt(i) == '.'){
					
					achouPonto = true;
					
				}
				
			}
			
		}
		
		System.out.println(achouArroba);
		System.out.println(achouPonto);
		
	}
}
***
GOSTEI 0
Gfilho

Gfilho

09/04/2009

valeu galera, era isso mesmo................... muito obrigado
GOSTEI 0
Camillo Borges

Camillo Borges

09/04/2009

só um cometário... Isso daqui [b]i <= txtEmail.getText().trim().length()-1[/b] é feio... usa assim que fica mais bonito... [b]i < txtEmail.getText().trim().length()[/b]
GOSTEI 0
Gfilho

Gfilho

09/04/2009

Obrigado pela dica, estou iniciando.............. em java......, mas só uma coisa, isso é apenas uma questao de estetica né? pq na pratica a performance continua a mesma certo? de qq forma estou alterando o meu codigo...... valeu GAbriel
GOSTEI 0
Junior.esnaola

Junior.esnaola

09/04/2009

[quote="gfilho"]Obrigado pela dica, estou iniciando.............. em java......, mas só uma coisa, isso é apenas uma questao de estetica né? pq na pratica a performance continua a mesma certo? de qq forma estou alterando o meu codigo...... valeu GAbriel
com certeza é só estética mas você mesmo vai se achar bem mais fácil padronizando seu código exemplo: no teu código postado tem 2 for, um começa em 1 outro começa em 2. tenta sempre padronizar o código,a não ser q não dê, no exemplo citado comece os for's' com 0 (sempre) pra ti te achar melhor. []s
GOSTEI 0
Gfilho

Gfilho

09/04/2009

ok, eu entendi.................. mas entao, no meu codigo eu começo um em dois que no caso a terceira posicao do length(), com isso eu forço o usuario a informar um email com pelo menos dois caracteres antes do @ e o segundo for inicio 1 possicao apos o @, assim o user nao podera digitar email@.com por exemplo....... até + Gabriel
GOSTEI 0
Camillo Borges

Camillo Borges

09/04/2009

Tipo, esta diferenca até influencia na performance, mas é uma coisa muuuuuuuinto insignificante... na verdade da forma que postei: i < txtEmail.getText().trim().length() o processador só testa se "i" é menor que "txtEmail.getText().trim().length()", da sua forma ele processa primeiro ele precisa ver se "i" é menor [b]ou igual[/b] ao [b]resultado[/b] de "txtEmail.getText().trim().length()" - 1... compreendeu? mas esso é milésimos de milésimos de segundos em um processador moderno...
GOSTEI 0
Asdfasdfa

Asdfasdfa

09/04/2009

Se tu nao for fazer essa comparacao milhares de vezes para justificar o charAt eu faria assim.
boolean existe = true;
if (txtEmail.getText().indexOf("@") == -1) {
  existe = false;
}
]['s
GOSTEI 0
POSTAR