Fórum uso do charAt() #567997

09/04/2009

0

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

Responder

Posts

09/04/2009

João Bier

tente assim:
1
2
3
4
5
6
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 :!:
Responder

Gostei + 0

09/04/2009

Rodrigo_corinthians

O primeiro erro acontece porq vc usa as "" na condição, charAt retorna um "char", use as '' simples. ***
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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);
         
    }
}
***
Responder

Gostei + 0

09/04/2009

Gfilho

valeu galera, era isso mesmo................... muito obrigado
Responder

Gostei + 0

09/04/2009

Camillo Borges

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]
Responder

Gostei + 0

09/04/2009

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
Responder

Gostei + 0

09/04/2009

Junior.esnaola

[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
Responder

Gostei + 0

09/04/2009

Gfilho

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
Responder

Gostei + 0

09/04/2009

Camillo Borges

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...
Responder

Gostei + 0

09/04/2009

Asdfasdfa

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

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar