Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Resolução do Desafio

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        String palavraFinal = "fim".toLowerCase();
        String entrada;
        List<Double> numerosPositivos = new ArrayList<>();
        List<Double> numerosNegativos = new ArrayList<>();


        do {
            System.out.print("Digite um número (ou 'fim' para encerrar): ");
            entrada = scanner.nextLine();

            if (entrada.toLowerCase().equals(palavraFinal)){
                break;
            } else if (entrada.contains("-")){
                numerosNegativos.add(Double.parseDouble(entrada));
            } else {
                numerosPositivos.add(Double.parseDouble(entrada));
            }

        } while (!entrada.equals(palavraFinal));

        System.out.println("Números positivos: " + numerosPositivos.size());
        System.out.println("Números negativos: " + numerosNegativos.size());

        scanner.close();

    }
}


1 resposta

Olá, Pablo. Tudo bem com você?

Obrigado por compartilhar sua resolução do desafio. A proposta foi atendida e o uso do do while combinado com a palavra de encerramento "fim" permite que a entrada seja repetida até o momento desejado pelo usuário. Além disso, utilizar listas para armazenar os números positivos e negativos também funciona e possibilita aproveitar esses valores posteriormente, caso fosse necessário realizar outros tipos de processamento.

Há apenas um detalhe que merece atenção. A verificação entrada.contains("-") identifica qualquer texto que contenha o caractere -, não necessariamente um número negativo. Uma abordagem mais confiável seria converter a entrada para double e comparar seu valor, por exemplo, numero < 0 para negativos e numero > 0 para positivos. Dessa forma, valores como -3.5 continuam sendo classificados corretamente, enquanto a lógica fica baseada no valor numérico e não na presença de um caractere. Como o exercício solicita apenas a contagem, outra possibilidade seria utilizar dois contadores em vez de listas, reduzindo o consumo de memória.

Como você adaptaria essa solução para também informar quantos valores iguais a zero foram digitados?

Parabéns pela dedicação e por compartilhar sua solução. Continue praticando e conte com o fórum sempre que precisar.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!