Como vejo se uma String é um número Inteiro?

6 respostas
D

To precisando fazer isso, tem que ser um método tipo o isDigit do c++.

6 Respostas

Alexwell

Não conheço um método pronto, mas você pode fazer um!!!

public static boolean verificaInt( String str ){
		boolean bool = false;
		try{
			int num = Integer.parseInt( str );
			bool = true;
		}catch( NumberFormatException exception ){
			bool = false;
		}
		return bool;
	}

Para Testar

String numDigitado = "s";
		if( verificaInt( numDigitado ) )
			System.out.printf( "%s", "numDigitado é um número inteiro!!" );
		else 
			System.out.printf( "%s", "numDigitado não é um número inteiro!!" );

Espero ter ajudado…

Diego_Silveira

Somente otimizando a resposta do Alexwell:

public static boolean verificaInt( String str ) {
   
   try {
      Integer.parseInt( str );
      return true;
   } catch( NumberFormatException e ) {
      return false;
   } 
}

Preciosismo, não precisava das variáveis int num e boolean bool, :wink:

Alexwell

Boa,

do jeito que o Diego Santos da Silveira fez fica mais legivel e é claro, bem melhor!!!

Abraço,

D

Obrigado pelas respostas, me ajudaram muito.

wesley.comput

Bom dia.
Me corrijam se estiver errado, mas o isdigit do C++ verifica se apenas um caractere é um número. Achei válida a solução do nosso amigo Alex, mais eh estranho ter que tentar gerar uma exceção para verificar se uma string eh um número. Não eh uma critica, mais eu evito utilizar esta “notação”.
Segue dois exemplos, um utilizando indice e outro o foreach.

public boolean isDigit(String digit) {
    for(int i = 0; i < digit.length(); i++)
        if(!Character.isDigit(digit.charAt(i)))
            return false;
    return true;
}
public boolean isDigitc(String digit) {
    for(char c : digit.toCharArray())
        if(!Character.isDigit(c))
            return false;
        return true;
}
Diego_Silveira

Então wesley.comput entendi sua proposta e ela tbm é válida… depende do que o douglastc precisa.
A sua proposta retorna true para qualquer String que seja composta somente por dígitos, ou seja retorna true até para 2552147483648 (Integer.MAX_VALUE + 1)…

Já da forma proposta pelo Alexwell, somente strings que possam ser armazenadas em uma variável do tipo int ou Integer serão validadas, caso contrário o retorno será false.

Quanto às exceções, não há mal nenhum em capturar/lançar uma exception para validar algo… muitos métodos da Sun fazem uso disso ;).

Criado 25 de outubro de 2008
Ultima resposta 27 de out. de 2008
Respostas 6
Participantes 4