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!