Scannerteclado=newScanner(System.in);System.out.println("Digite um nome para saber se existe números");Stringnome=teclado.nextLine();intcont;for(inti=0;i<nome.length();i++){for(intf=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");}
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:
publicstaticvoidmain(String[]args){Scannerteclado=newScanner(System.in);System.out.println("Digite um nome para saber se existe números");Stringnome=teclado.nextLine();BooleanhaveNumbers=false;for(inti=0;i<nome.length();i++){try{Integernumero=Integer.valueOf(nome.charAt(i));haveNumbers=true;System.out.println("Existe número nesse nome");}catch(ClassCastExceptione){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).
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:
inta=1;charb='1';//vocêvaiestarcomparandoovalor1(int)com//49(valordecdochar'1')//if(a==b)//paratesteintx=b;System.out.println(x); // vai imprimir 49 //