Como verifiar se a string é letra ou numero?

Pessoal, tenho esta dúvida. Como eu posso verificar se a estring é letra ou numero??

String str = “a2d3fd32”;
String str2="";

str2 = str.substring(1,2);

str2 é igual há - 2 -

mas como eu faço essa verificacão??? sem fazer conversão??

[code]
public boolean ehInteiro( String s ) {

// cria um array de char
char[] c = s.toCharArray();
boolean d = true;

for ( int i = 0; i < c.length; i++ )
    // verifica se o char não é um dígito
    if ( !Character.isDigit( c[ i ] ) ) {
        d = false;
        break;
    }
}

return d;

}[/code]

Falta verificar se tem um ponto no meio caso queria um número decimal.

Até mais!

1 curtida
        try {
	    valor = (Double.parseDouble(str2));
            ehNumero = true;
	} catch (NumberFormatException e) {	  
            ehNumero = false;
	}

       if (ehNumero) {
       ....
       }

Valew David exatamente o que eu queria!!

TÓPICO RESPONDIDO!

Disponha :smiley:

acho que você pode fazer isso por expressões regulares
ainda não entendo muito maisacho que é algo assim

String a = "a2w5sd6545";
if(a.contains("^[a-Z]"))System.out.println("Tem letras");
else System.out.println("Apenas numeros");

Realmente Mark, pode-se usar uma expressão regular, mas seria mais interessante verificar se é um número e não se a String não contém números. Se sua String for “ac_ds” vc vai ver que seu trecho de código vai mostrar “Apenas números” enquanto na verdade existe um “_” ali no meio. Mais uma coisa, o contains não funciona com expressões regulares.

Se quiser usar expressões regulares, vc pode fazer:

[code]
String s1 = “”;
String s2 = “.”;
String s3 = “0.”;
String s4 = “0”;
String s5 = “.0”;
String s6 = “0.0”;

// [-]? com ou sem o sinal de subtração
// \d* zero ou mais dígitos
// [.]? com ou sem ponto
// \d+ um ou mais números
String p = “[-]?\d*[.]?\d+”;

// compara cada String com o padrão “p”
System.out.println( Pattern.matches( p, s1 ) );
System.out.println( Pattern.matches( p, s2 ) );
System.out.println( Pattern.matches( p, s3 ) );
System.out.println( Pattern.matches( p, s4 ) );
System.out.println( Pattern.matches( p, s5 ) );
System.out.println( Pattern.matches( p, s6 ) );[/code]

Até mais!

[quote=Mark_Ameba]acho que você pode fazer isso por expressões regulares
ainda não entendo muito maisacho que é algo assim

String a = "a2w5sd6545"; if(a.contains("^[a-Z]"))System.out.println("Tem letras"); else System.out.println("Apenas numeros"); [/quote]

Poooooo, valeu mesmo…

…gostei dessa!!

Com regex seria melhor checar tudo, até o final.

[code] String s = “Déjàvu”;

  if (s.matches("^[a-zA-ZÁÂÃÀÇÉÊÍÓÔÕÚÜáâãàçéêíóôõúü]*$"))
     System.out.println("Só tem letras.");
  else if (s.matches("^[0-9]*$"))
     System.out.println("Só tem dígitos.");
  else
     System.out.println("Outro");[/code]

Não qrdo desvirtuar o tópico mas desvirtuando, seria melhor chegar se só tem números e não os caracteres que não pode ter…

String texto = "abcdefg";

//Só números
if(texto.matches("^[0-9]*$")){
...

//Se quiser separador decimal tb
if(texto.matches("^[0-9]*[.]{0,1}[0-9]*$")){
...

Espero ter ajudado…

[]'s

3 curtidas

Pessoal ,

Somente para ficar no historico desse tópico , no caso de outras pessoas estiverem com essa duvida , segue uma forma de fazer essa verificação parecido com a do davidbuzatto:


	public boolean ehInteiro( String s ) {  
  
		// cria um array de char  
		// char[] c = s.toCharArray();  
		boolean d = true;  
  
		for ( int i = 0; i < s.length(); i++ ) { 
			// verifica se o char não é um dígito  
			if ( !Character.isDigit( s.charAt(i) ) ) {  
				d = false;  
				break;  
			}  
		}  
  
	return d;  
  
	}