Artigo original: Java String to Int – How to Convert a String to an Integer

Objetos de string são representados como uma cadeia de caracteres.

Se você já trabalhou com o Java Swing, ele tem componentes como o JTextField e o JTextArea, que nós usamos para obter entradas de dados da GUI. Eles carregam nossos dados como strings.

Se quisermos fazer uma calculadora simples usando o Swing, precisamos descobrir como converter uma string em um número inteiro. Isso nos leva à pergunta – como podemos converter uma string em um inteiro?

Em Java, podemos usar Integer.valueOf() e Integer.parseInt() para converter uma string em um número inteiro.

1. Use Integer.parseInt() para converter uma string em um número inteiro

Este método retorna a string como um tipo primitivo int. Se a string não contiver um número inteiro válido, será lançada uma NumberFormatException.

Assim, sempre que convertemos uma string em um int, precisamos lidar com essa exceção colocando o código dentro de um bloco de try-catch.

Vamos considerar um exemplo convertendo uma string em um int usando Integer.parseInt():

        String str = "25";
        try{
            int number = Integer.parseInt(str);
            System.out.println(number); // resultado = 25
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }

Vamos tentar quebrar esse código inserindo um número inteiro inválido:

     	String str = "25T";
        try{
            int number = Integer.parseInt(str);
            System.out.println(number);
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }

Como você pode ver no código acima, tentamos converter 25T em um número inteiro. Esta não é uma entrada válida. Portanto, ela deverá lançar uma NumberFormatException.

Este é o resultado do código acima:

java.lang.NumberFormatException: For input string: "25T"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.parseInt(Integer.java:615)
	at OOP.StringTest.main(StringTest.java:51)

Em seguida, vamos ver como converter uma string em um número inteiro usando o método Integer.valueOf().

2. Use Integer.valueOf() para converter uma string em um número inteiro

Este método retorna a string como um objeto de número inteiro. Se você olhar a documentação do Java, Integer.valueOf() retorna um objeto de número inteiro equivalente a new Integer(Integer.parseInt(s)).

Colocaremos nosso código dentro de um bloco de try-catch ao usar esse método. Vejamos um exemplo usando o método Integer.valueOf():

        String str = "25";
        try{
            Integer number = Integer.valueOf(str);
            System.out.println(number); // resultado = 25
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }

Agora, vamos tentar quebrar o código acima inserindo um número inteiro inválido:

        String str = "25TA";
        try{
            Integer number = Integer.valueOf(str);
            System.out.println(number); 
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }

Da mesma maneira que no exemplo anterior, o código acima lançará uma exceção.

Aqui está o resultado do código acima:

java.lang.NumberFormatException: For input string: "25TA"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.valueOf(Integer.java:766)
	at OOP.StringTest.main(StringTest.java:42)

Também criaremos um método para verificar se a string informada é numérica ou não antes de usar os métodos mencionados acima.

Criei um método simples para verificar se a string informada é ou não numérica.

public class StringTest {
    public static void main(String[] args) {
        String str = "25";
        String str1 = "25.06";
        System.out.println(isNumeric(str));
        System.out.println(isNumeric(str1));
    }

    private static boolean isNumeric(String str){
        return str != null && str.matches("[0-9.]+");
    }
}

O resultado é:

true
true

O método isNumeric() recebe uma string como argumento. Primeiro, ele verifica se o argumento é null ou não. Depois disso, usamos o método matches() para verificar se ele contém algarismos de 0 a 9 e o caractere de ponto.

Essa é uma maneira simples de verificar valores numéricos. Você pode escrever ou pesquisar no Google para encontrar expressões regulares mais avançadas que capturem números, dependendo de seu caso.

É uma prática recomendada verificar se a string informada é numérica ou não antes de tentar convertê-la em um número inteiro.

Obrigado pelo leitura.

Imagem da publicação: 🇸🇮 Janko Ferlič, do Unsplash

Entre em contato com o autor do texto pelo Medium.

Feliz programação!