Converter Inteiro Sem Sinal

JavaBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderemos como analisar um valor de string como um inteiro decimal sem sinal usando o método parseUnsignedInt() em Java. Percorreremos a sintaxe, os parâmetros e os tipos de retorno do método, e aprenderemos como usá-lo com a ajuda de alguns exemplos.

Criar um novo arquivo Java

Primeiramente, precisamos criar um novo arquivo Java no diretório ~/project. Podemos fazer isso abrindo o terminal e digitando:

touch ~/project/UnsignedIntegerParser.java

Isso abrirá uma janela em branco do editor Nano.

Importar a classe Integer

Precisamos importar a classe Integer do pacote java.lang, pois ela contém o método parseUnsignedInt(). Podemos fazer isso adicionando o seguinte código dentro do nosso arquivo:

import java.lang.Integer;

Converter inteiro sem sinal de um valor string

Agora, vamos aprender como usar o método parseUnsignedInt(). Podemos chamar este método em um valor string e ele retornará seu objeto Integer decimal sem sinal equivalente. Aqui está um exemplo:

String s = "123";
int n = Integer.parseUnsignedInt(s); //Converts the passed string as unsigned integer
System.out.println(n);

A saída deste código será 123.

Tratamento de entrada inválida

Se fornecermos uma entrada inválida ao método parseUnsignedInt(), ele lançará uma NumberFormatException. Podemos tratar essa exceção usando um bloco try-catch. Aqui está um exemplo:

try {
  String s = "-123";
  int n = Integer.parseUnsignedInt(s); //Converts the passed string as unsigned integer
  System.out.println(n);
} catch(NumberFormatException ex) {
  System.out.println("Invalid input.");
}

Neste código, estamos tentando converter um inteiro negativo, o que é inválido. O método parseUnsignedInt() lançará uma NumberFormatException, que é capturada pelo bloco catch. A saída deste código será Invalid input..

Lendo entrada do console

Também podemos ler a entrada do console e convertê-la como um inteiro sem sinal. Aqui está um exemplo:

Scanner scanner = new Scanner(System.in);
System.out.print("Enter a positive integer: ");
String s = scanner.nextLine();
try {
  int n = Integer.parseUnsignedInt(s); //Converts the passed string as unsigned integer
  System.out.println(n);
} catch(NumberFormatException ex) {
  System.out.println("Invalid input.");
}

Neste código, estamos usando a classe Scanner para ler a entrada do console. Em seguida, convertemos a string de entrada como um inteiro sem sinal usando o método parseUnsignedInt(). Finalmente, estamos capturando quaisquer exceções que possam ocorrer durante a conversão da entrada.

Para executar este código no terminal, precisamos primeiro compilá-lo usando o comando:

javac UnsignedIntegerParser.java

Em seguida, podemos executá-lo usando o comando:

java UnsignedIntegerParser

Analisando inteiros sem sinal de uma lista de strings

Também podemos converter inteiros sem sinal de uma lista de strings. Aqui está um exemplo:

List<String> stringList = Arrays.asList("123", "456", "789");
for (String s : stringList) {
  try {
    int n = Integer.parseUnsignedInt(s); //Converts the passed string as unsigned integer
    System.out.println(n);
  } catch(NumberFormatException ex) {
    System.out.println("Invalid input: " + s);
  }
}

Neste código, estamos iterando sobre uma lista de strings e convertendo cada string como um inteiro sem sinal usando o método parseUnsignedInt(). Se a string não for um inteiro sem sinal válido, capturamos a exceção e imprimimos uma mensagem de erro.

Usando uma função auxiliar

Para evitar repetir o mesmo bloco try-catch toda vez que convertemos um inteiro sem sinal, podemos criar uma função auxiliar que recebe uma string como entrada e retorna um inteiro sem sinal. Aqui está um exemplo:

public static int parseUnsignedInt(String s) {
  try {
    return Integer.parseUnsignedInt(s); //Converts the passed string as unsigned integer
  } catch(NumberFormatException ex) {
    return -1; //Return -1 for invalid input
  }
}

Neste código, estamos definindo uma função parseUnsignedInt() que recebe uma string como entrada e retorna um inteiro sem sinal. Se a entrada não for um inteiro sem sinal válido, a função retorna -1. Podemos então usar esta função para converter inteiros sem sinal sem nos preocuparmos com exceções. Aqui está um exemplo de como usar a função:

String s = "123";
int n = parseUnsignedInt(s);
System.out.println(n); //Output: 123

s = "-123";
int n = parseUnsignedInt(s);
System.out.println(n); //Output: -1

Manipulando inteiros sem sinal maiores

Se precisarmos converter inteiros sem sinal maiores, podemos usar o método parseUnsignedInt() da classe UnsignedInteger em vez da classe Integer. Este método retorna um long em vez de um int. Aqui está um exemplo:

String s = "4294967295"; //Maximum value of an unsigned 32-bit integer
long n = Long.parseUnsignedLong(s);
System.out.println(n); //Output: 4294967295

Usando Radix (Base Numérica)

Se quisermos converter uma string que representa um número em uma base diferente de 10, podemos usar o método parseInt() que recebe um parâmetro adicional radix (base). Aqui está um exemplo:

String s = "1101"; //Binary representation of 13
int n = Integer.parseUnsignedInt(s, 2); //Parse as binary
System.out.println(n); //Output: 13

Saindo do Nano e executando o código

Para sair do Nano, pressione Ctrl+X, depois pressione Y para salvar o arquivo e, em seguida, pressione Enter.

Para executar o código no terminal, podemos compilá-lo usando o comando:

javac UnsignedIntegerParser.java

Em seguida, podemos executá-lo usando o comando:

java UnsignedIntegerParser

Resumo

Neste laboratório, aprendemos como converter um valor de string como um Integer decimal sem sinal usando o método parseUnsignedInt() em Java. Também aprendemos como lidar com entradas inválidas, ler a entrada do console, converter inteiros sem sinal de uma lista de strings e usar funções auxiliares. Além disso, aprendemos como converter inteiros sem sinal maiores, usar a base (radix) e executar nosso código no terminal.