Como Verificar se um Array Contém Apenas Números Positivos em Java

JavaBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se um array contém apenas números positivos em Java. Exploraremos diferentes abordagens para alcançar isso, começando com um método fundamental que utiliza um loop para iterar pelo array e verificar cada elemento individualmente.

Após o método básico do loop, aprofundaremos o uso da Java Stream API, uma forma mais moderna e frequentemente mais concisa de processar coleções. Finalmente, discutiremos como lidar com números zero e negativos no contexto de determinar se um array contém apenas valores positivos. Este laboratório fornecerá habilidades práticas em manipulação de arrays e lógica condicional em Java.

Iterar pelo Array para Verificação de Positivos

Nesta etapa, aprenderemos como iterar por um array de números em Java e verificar se cada número é positivo. Esta é uma operação fundamental na programação, permitindo-nos processar coleções de dados.

Primeiro, vamos criar um novo arquivo Java chamado PositiveCheck.java no seu diretório ~/project. Você pode fazer isso clicando com o botão direito no File Explorer (Explorador de Arquivos) à esquerda e selecionando "New File" (Novo Arquivo), em seguida, digitando PositiveCheck.java.

Agora, abra o arquivo PositiveCheck.java no editor e adicione o seguinte código:

public class PositiveCheck {

    public static void main(String[] args) {
        // Define an array of integers
        int[] numbers = {10, -5, 20, 0, 15, -8};

        // Loop through the array
        for (int i = 0; i < numbers.length; i++) {
            // Get the current number
            int currentNumber = numbers[i];

            // Check if the number is positive
            if (currentNumber > 0) {
                System.out.println(currentNumber + " is a positive number.");
            }
        }
    }
}

Vamos detalhar este código:

  • public class PositiveCheck: Isso declara nossa classe, correspondendo ao nome do arquivo.
  • public static void main(String[] args): Este é o método principal onde a execução do nosso programa começa.
  • int[] numbers = {10, -5, 20, 0, 15, -8};: Esta linha declara um array de inteiros chamado numbers e o inicializa com alguns valores. Um array é uma coleção de elementos do mesmo tipo de dados.
  • for (int i = 0; i < numbers.length; i++): Este é um loop for. É uma estrutura de controle que nos permite repetir um bloco de código várias vezes.
    • int i = 0: Isso inicializa uma variável de contador i com 0.
    • i < numbers.length: Esta é a condição que é verificada antes de cada iteração. O loop continua enquanto i for menor que o comprimento do array numbers. numbers.length nos dá o número de elementos no array.
    • i++: Isso incrementa o contador i em 1 após cada iteração.
  • int currentNumber = numbers[i];: Dentro do loop, esta linha acessa o elemento no índice atual i do array numbers e o armazena em uma variável chamada currentNumber. Os índices do array começam em 0.
  • if (currentNumber > 0): Esta é uma instrução if. Ela verifica se o currentNumber é maior que 0.
  • System.out.println(currentNumber + " is a positive number.");: Esta linha é executada somente se a condição if for verdadeira (ou seja, o número é positivo). Ela imprime o número positivo seguido pelo texto " is a positive number.".

Salve o arquivo PositiveCheck.java (Ctrl+S ou Cmd+S).

Agora, vamos compilar e executar este programa no Terminal. Certifique-se de estar no diretório ~/project.

Compile o código:

javac PositiveCheck.java

Se não houver erros, um arquivo PositiveCheck.class será criado.

Agora, execute o código compilado:

java PositiveCheck

Você deve ver a saída mostrando apenas os números positivos do array.

10 is a positive number.
20 is a positive number.
15 is a positive number.

Isso demonstra como usar um loop for para iterar por um array e aplicar uma condição a cada elemento. Na próxima etapa, exploraremos uma maneira mais moderna de alcançar um resultado semelhante usando a Java Stream API.

Usar a Stream API para Números Positivos

Nesta etapa, exploraremos uma maneira mais moderna e, muitas vezes, mais concisa de processar coleções em Java: a Stream API. Introduzida no Java 8, as Streams fornecem uma maneira poderosa de realizar operações como filtragem, mapeamento e redução em coleções de dados.

Modificaremos nosso exemplo anterior para usar Streams para encontrar os números positivos no array.

Abra o arquivo PositiveCheck.java no editor novamente. Substitua o código existente pelo seguinte:

import java.util.Arrays;

public class PositiveCheck {

    public static void main(String[] args) {
        // Define an array of integers
        int[] numbers = {10, -5, 20, 0, 15, -8};

        // Use Stream API to filter and print positive numbers
        Arrays.stream(numbers) // 1. Create a stream from the array
              .filter(number -> number > 0) // 2. Filter for positive numbers
              .forEach(number -> System.out.println(number + " is a positive number (Stream).")); // 3. Process each positive number
    }
}

Vamos analisar as novas partes deste código:

  • import java.util.Arrays;: Precisamos importar a classe Arrays para usar seu método stream().
  • Arrays.stream(numbers): Esta linha converte nosso array int em um IntStream. Uma stream não é uma estrutura de dados em si, mas sim uma sequência de elementos que podem ser processados.
  • .filter(number -> number > 0): Esta é uma operação intermediária na stream. O método filter() recebe um Predicate (uma função que retorna verdadeiro ou falso) e mantém apenas os elementos para os quais o predicado é verdadeiro. Aqui, number -> number > 0 é uma expressão lambda, que é uma maneira concisa de escrever uma função. Ele verifica se cada number na stream é maior que 0.
  • .forEach(number -> System.out.println(number + " is a positive number (Stream)."));: Esta é uma operação terminal. Operações terminais consomem a stream e produzem um resultado. O método forEach() executa uma ação para cada elemento na stream. Aqui, ele imprime cada número positivo junto com uma mensagem.

Salve o arquivo PositiveCheck.java.

Agora, compile e execute o programa modificado no Terminal:

javac PositiveCheck.java
java PositiveCheck

Você deve ver a mesma saída de antes, mas com a mensagem atualizada:

10 is a positive number (Stream).
20 is a positive number (Stream).
15 is a positive number (Stream).

Isso demonstra como a Stream API pode ser usada para alcançar o mesmo resultado que o loop for tradicional, muitas vezes com um código mais legível e expressivo, especialmente para operações mais complexas.

Lidar com Números Zero e Negativos

Nas etapas anteriores, focamos na identificação de números positivos. Agora, vamos expandir nosso programa para também identificar números zero e negativos. Isso nos dará uma imagem mais completa dos números em nosso array.

Modificaremos o arquivo PositiveCheck.java novamente para incluir verificações de números zero e negativos usando a abordagem tradicional do loop for primeiro, pois é frequentemente mais fácil entender a lógica condicional com as instruções if-else if-else.

Abra o arquivo PositiveCheck.java no editor. Substitua o código existente pelo seguinte:

public class PositiveCheck {

    public static void main(String[] args) {
        // Define an array of integers
        int[] numbers = {10, -5, 20, 0, 15, -8};

        // Loop through the array
        for (int i = 0; i < numbers.length; i++) {
            // Get the current number
            int currentNumber = numbers[i];

            // Check if the number is positive, negative, or zero
            if (currentNumber > 0) {
                System.out.println(currentNumber + " is a positive number.");
            } else if (currentNumber < 0) {
                System.out.println(currentNumber + " is a negative number.");
            } else {
                System.out.println(currentNumber + " is zero.");
            }
        }
    }
}

Aqui está o que é novo:

  • else if (currentNumber < 0): Esta é uma instrução else if. Ela verifica se o currentNumber é menor que 0, mas somente se a condição if anterior (currentNumber > 0) for falsa.
  • else: Esta é uma instrução else. O código dentro do bloco else é executado se nenhuma das condições if ou else if precedentes for verdadeira. Neste caso, se o número não for maior que 0 e não for menor que 0, ele deve ser 0.

Salve o arquivo PositiveCheck.java.

Agora, compile e execute o programa modificado no Terminal:

javac PositiveCheck.java
java PositiveCheck

Você deve agora ver a saída que categoriza cada número no array:

10 is a positive number.
-5 is a negative number.
20 is a positive number.
0 is zero.
15 is a positive number.
-8 is a negative number.

Isso demonstra como usar as instruções if-else if-else para lidar com múltiplas condições dentro de um loop. Este é um padrão fundamental para a tomada de decisões na programação.

Você também pode obter resultados semelhantes usando a Stream API com técnicas mais avançadas como partitioningBy ou múltiplas operações filter, mas o loop for com if-else if-else é uma abordagem clara e direta para esta tarefa específica, especialmente para iniciantes.

Resumo

Neste laboratório, aprendemos como verificar se um array contém apenas números positivos em Java. Exploramos dois métodos principais: iterar pelo array usando um loop for e utilizar a Java Stream API.

Começamos criando uma classe Java e usando um loop for para examinar cada elemento em um array de inteiros. Implementamos uma verificação condicional (if (currentNumber > 0)) para identificar e imprimir números positivos. Essa abordagem fundamental demonstrou como acessar e processar elementos individuais dentro de um array. Embora o conteúdo fornecido tenha detalhado apenas o método do loop, a estrutura do laboratório indica que as etapas subsequentes cobririam a Stream API e o tratamento de números zero/negativos, proporcionando uma compreensão abrangente de diferentes técnicas para esta tarefa de programação comum.