Introdução
Neste laboratório, você aprenderá como verificar se uma string pode ser convertida em um inteiro em Java. Esta é uma habilidade fundamental para lidar com a entrada do usuário ou dados de fontes externas.
Você explorará o método Integer.parseInt() para tentar a conversão, aprenderá como lidar com erros potenciais usando NumberFormatException e descobrirá técnicas para validar uma string antes de tentar analisá-la, garantindo um código robusto e livre de erros.
Tentar a Análise com Integer.parseInt()
Nesta etapa, exploraremos como converter uma String (texto) em um int (número inteiro) em Java. Esta é uma tarefa comum em programação, especialmente quando você precisa obter entrada numérica de um usuário ou ler números de um arquivo.
Java fornece um método embutido chamado Integer.parseInt() para essa finalidade. Vamos ver como funciona.
Primeiro, certifique-se de estar no diretório
~/project. Você pode usar o comandocd ~/projectno Terminal, se necessário.Agora, vamos criar um novo arquivo Java chamado
StringToInt.javano diretório~/project. Você pode fazer isso clicando com o botão direito no File Explorer à esquerda, selecionando "New File" e digitandoStringToInt.java.Abra o arquivo
StringToInt.javano Code Editor e cole o seguinte código:public class StringToInt { public static void main(String[] args) { String numberString = "123"; int numberInt = Integer.parseInt(numberString); System.out.println("The string is: " + numberString); System.out.println("The integer is: " + numberInt); } }Vamos analisar as novas partes:
String numberString = "123";: Declaramos uma variávelStringchamadanumberStringe atribuímos a ela o valor"123". Observe que"123"está entre aspas duplas, indicando que é uma string.int numberInt = Integer.parseInt(numberString);: Este é o núcleo desta etapa. Chamamos o métodoInteger.parseInt(), passando nossanumberStringcomo um argumento. Este método tenta converter a string"123"em um inteiro. O resultado é armazenado em uma variávelintchamadanumberInt.System.out.println("The string is: " + numberString);: Esta linha imprime a string original.System.out.println("The integer is: " + numberInt);: Esta linha imprime o inteiro convertido.
Salve o arquivo (Ctrl+S ou Cmd+S).
Agora, vamos compilar o programa. Abra o Terminal e execute o seguinte comando:
javac StringToInt.javaSe a compilação for bem-sucedida, você não deverá ver nenhuma saída, e um arquivo
StringToInt.classserá criado no diretório~/project.Finalmente, execute o programa compilado:
java StringToIntVocê deverá ver a seguinte saída:
The string is: 123 The integer is: 123Como você pode ver, o método
Integer.parseInt()converteu com sucesso a string"123"no inteiro123.
Na próxima etapa, exploraremos o que acontece quando a string não pode ser convertida em um inteiro.
Capturar NumberFormatException
Na etapa anterior, convertemos com sucesso uma string contendo apenas dígitos em um inteiro usando Integer.parseInt(). Mas o que acontece se a string contiver caracteres que não são dígitos? Vamos descobrir.
Quando Integer.parseInt() tenta converter uma string que não é uma representação válida de um número, ele lança uma NumberFormatException. Este é um tipo de erro que indica um problema com o formato da string numérica.
Para lidar com esses erros de forma elegante, podemos usar um bloco try-catch. Um bloco try-catch nos permite "tentar" um trecho de código que pode causar um erro, e se um erro ocorrer, podemos "capturá-lo" e tratá-lo de uma maneira específica, impedindo que nosso programa trave.
Vamos modificar nosso programa StringToInt.java para demonstrar isso.
Abra o arquivo
StringToInt.javano editor WebIDE.Modifique o código para incluir um bloco
try-catche altere a string de entrada:public class StringToInt { public static void main(String[] args) { String numberString = "abc"; // This string cannot be parsed as an integer try { int numberInt = Integer.parseInt(numberString); System.out.println("The string is: " + numberString); System.out.println("The integer is: " + numberInt); } catch (NumberFormatException e) { System.out.println("Error: Could not convert the string to an integer."); System.out.println("Details: " + e.getMessage()); } } }Aqui está o que adicionamos:
String numberString = "abc";: Mudamos a string para"abc", que claramente não é um inteiro válido.try { ... }: O código dentro do blocotryé o que queremos tentar. Neste caso, é a chamadaInteger.parseInt().catch (NumberFormatException e) { ... }: Se umNumberFormatExceptionocorrer dentro do blocotry, o código dentro do blococatchserá executado.System.out.println("Error: Could not convert the string to an integer.");: Esta linha imprime uma mensagem de erro amigável ao usuário.System.out.println("Details: " + e.getMessage());: Esta linha imprime mais detalhes sobre a exceção, o que pode ser útil para depuração.
Salve o arquivo (Ctrl+S ou Cmd+S).
Compile o programa modificado no Terminal:
javac StringToInt.javaExecute o programa compilado:
java StringToIntDesta vez, como
"abc"não pode ser analisado como um inteiro, oNumberFormatExceptionserá capturado, e você deverá ver uma saída semelhante a esta:Error: Could not convert the string to an integer. Details: For input string: "abc"Em vez de o programa travar, o bloco
catchtratou o erro e imprimiu uma mensagem útil. Esta é uma experiência do usuário muito melhor!
Usar blocos try-catch é crucial para escrever programas robustos que podem lidar com entradas ou situações inesperadas.
Validar String Antes da Análise
Na etapa anterior, aprendemos como capturar um NumberFormatException quando Integer.parseInt() falha. Embora capturar exceções seja importante para lidar com erros, muitas vezes é melhor evitar que o erro aconteça em primeiro lugar.
Nesta etapa, aprenderemos como validar uma string antes de tentar analisá-la como um inteiro. Isso envolve verificar se a string contém apenas dígitos.
Uma maneira de fazer isso é iterar por cada caractere da string e verificar se é um dígito. Outra abordagem comum é usar expressões regulares, mas para iniciantes, um loop simples é mais fácil de entender.
Vamos modificar nosso programa StringToInt.java novamente para incluir uma verificação de validação.
Abra o arquivo
StringToInt.javano editor WebIDE.Substitua o código existente pelo seguinte:
public class StringToInt { public static void main(String[] args) { String numberString = "123a"; // This string contains a non-digit character if (isValidInteger(numberString)) { int numberInt = Integer.parseInt(numberString); System.out.println("The string is: " + numberString); System.out.println("The integer is: " + numberInt); } else { System.out.println("Error: The string '" + numberString + "' is not a valid integer."); } } // Method to check if a string is a valid integer public static boolean isValidInteger(String str) { if (str == null || str.isEmpty()) { return false; // An empty or null string is not a valid integer } for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (i == 0 && (c == '-' || c == '+')) { // Allow a leading sign (+ or -) continue; } if (!Character.isDigit(c)) { return false; // Found a non-digit character } } return true; // All characters are digits (or a leading sign) } }Vamos analisar as mudanças:
- Adicionamos um novo método chamado
isValidInteger(String str). Este método recebe uma string como entrada e retornatruese a string representa um inteiro válido efalsecaso contrário. - Dentro de
isValidInteger, primeiro verificamos se a string é nula ou vazia. - Em seguida, percorremos cada caractere da string.
Character.isDigit(c)é um método Java embutido que verifica se um caractere é um dígito.- Adicionamos uma verificação para permitir um sinal de mais ou menos inicial.
- No método
main, agora usamos uma instruçãoif-else. ChamamosisValidInteger()para verificar a string antes de tentar analisá-la. - Se
isValidInteger()retornartrue, prosseguimos comInteger.parseInt(). - Se retornar
false, imprimimos uma mensagem de erro sem tentar analisar, evitando assim oNumberFormatException.
- Adicionamos um novo método chamado
Salve o arquivo (Ctrl+S ou Cmd+S).
Compile o programa modificado no Terminal:
javac StringToInt.javaExecute o programa compilado:
java StringToIntComo a string
"123a"contém um caractere que não é um dígito, o métodoisValidIntegerretornaráfalse, e você deverá ver a seguinte saída:Error: The string '123a' is not a valid integer.Agora, vamos mudar a string de volta para um inteiro válido para ver o outro ramo da instrução
if-else.Mude a variável
numberStringde volta para"456"no arquivoStringToInt.java:String numberString = "456";Salve o arquivo.
Compile e execute o programa novamente:
javac StringToInt.java java StringToIntDesta vez,
isValidIntegerretornarátrue, e você deverá ver:The string is: 456 The integer is: 456
Ao validar a string antes da análise, podemos lidar com entradas inválidas de forma mais elegante e evitar erros de tempo de execução como NumberFormatException. Esta é uma boa prática para escrever um código mais robusto e confiável.
Resumo
Neste laboratório, aprendemos como converter uma String em um int em Java usando o método Integer.parseInt(). Criamos um arquivo Java, escrevemos código para demonstrar a conversão e compilamos o programa. Este método é essencial para lidar com entrada numérica de várias fontes.



