Quantidade de números de uma String

7 respostas
java
J
Estou com problemas para comparar a string com inteiro para saber quando números existem em uma String.

Scanner teclado = new Scanner(<a href="http://System.in">System.in</a>);

System.out.println(Digite um nome para saber se existe números);

String nome = teclado.nextLine();

int cont = 0;

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

for(int f=0; f<10; f++){

if(nome.charAt(i) == f){

cont++;

System.out.println(f);

}

}

}
if(cont>0){
        System.out.println("Existe número nesse nome");
    }else{
    
        System.out.println("Não existe número nesse nome");
    }

7 Respostas

J

Código

Scanner teclado = new Scanner(System.in);
       System.out.println("Digite um nome para saber se existe números");
       String nome = teclado.nextLine();
   
       int cont;
    
        for(int i= 0; i < nome.length(); i++){
        for(int f=0; f<10; f++){                              
            if(nome.charAt(i) == f){                  
                cont++;
                System.out.println(f);
        }
        }
    }
    
    if(cont>0){
        System.out.println("Existe número nesse nome");
    }else{
    
        System.out.println("Não existe número nesse nome");
    }
H
for(int f=0; f<10; f++){                              
        try{
            Integer.parseInt(nome.charAt(i));                  
            cont++;
            System.out.println(f);
        }catch(Exception e){}
    }
I

Amigo, se entendi, você quer identificar se existem caracteres numéricos numa String, certo?
Só podem vir números inteiros?
Se sim, segue a implementação que eu faria nesse caso:

public static void main(String[] args) {
    Scanner teclado = new Scanner(System.in);
    System.out.println("Digite um nome para saber se existe números");
    String nome = teclado.nextLine();
    Boolean haveNumbers = false;

    for(int i = 0; i < nome.length(); i++) {
        try {
            Integer numero = Integer.valueOf(nome.charAt(i));
            haveNumbers = true;
            System.out.println("Existe número nesse nome");
        } catch (ClassCastException e) {
            continue;
        }
    }
    if(!haveNumbers) {
        System.out.println("Não existe número nesse nome");
    }
}

Obs: não tenho certeza se o tipo de Exception tá certa e não sei se a expressão continue; pode ser usada dentro do catch (acho que sim).

Mas… a ideia é essa!

Espero ter ajudado!

V

Oi @JavaCoffe2, apenas para complementar a resposta do @igorventurelli.

Por um lado sua logica faz sentido, a comparação, mas porque não da certo? bom pois quando você compara um char com um int, o java vai usar pegar o valor da tabela ASCII(http://www.asciitable.com/) deste char e comparar com o inteiro.

exemplo:

int a = 1;
char b = '1';
// você vai estar comparando o valor 1(int) com  
// 49(valor dec do char '1') 		
// if(a == b)

// para teste
int x = b;
System.out.println(x); // vai imprimir 49 //

logo você sempre tem que converter.

I

Boa @victormenegusso!

J

Muito obrg, mas não importa o que eu escreva sempre exibi “Existe número nesse nome”

I

Breakpoint e debug

Criado 30 de setembro de 2016
Ultima resposta 30 de set. de 2016
Respostas 7
Participantes 5