1
resposta

[Projeto] Projeto Usando While com For percorrendo Lista

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

public class Main2 {
    static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int numeroPositivo = 0;
        int numeroNegativo = 0;


        while (true) {
            System.out.println("Digite um numero ou 'fim' para encerrar ");
            String entrada = sc.nextLine();
            try {
                if (entrada.equalsIgnoreCase("fim")) {
                    break;

                }
                int numero = Integer.parseInt(entrada);

                List<Integer> Numeros = new ArrayList<>(); /// estou criando a lista aqui , pq por algum motivo, se eu crio ela antes do meu Loop, ela soma os numeros
                Numeros.add(numero);

                for (Integer item : Numeros) {
                    if (item > 0) {
                        numeroPositivo++;

                    } else if (item < 0) {
                        numeroNegativo++;
                    }
                }

            } catch (NumberFormatException e) {
                e.getMessage();
            }


        }
        System.out.println("Numero positivos : \n" + numeroPositivo);
        System.out.println("Numeros Negativos : \n" + numeroNegativo);


    }
}
1 resposta

Olá, Weid! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de laços de repetição para controlar a entrada contínua de dados, utilizou muito bem o tratamento de exceções para evitar erros de execução e ainda compreendeu a importância da lógica condicional para classificar os números em positivos e negativos.

Uma dica interessante para o futuro é declarar a lista fora do loop e apenas adicionar os números dentro dele, evitando recriar a lista a cada iteração. Assim:

List<Integer> numeros = new ArrayList<>();
while (true) {
    System.out.println("Digite um número ou 'fim' para encerrar ");
    String entrada = sc.nextLine();
    if (entrada.equalsIgnoreCase("fim")) {
        break;
    }
    try {
        int numero = Integer.parseInt(entrada);
        numeros.add(numero);
        if (numero > 0) {
            numeroPositivo++;
        } else if (numero < 0) {
            numeroNegativo++;
        }
    } catch (NumberFormatException e) {
        System.out.println("Entrada inválida, digite apenas números inteiros.");
    }
}

Isso faz com que o programa seja mais eficiente e mantenha todos os números registrados para uso futuro, se necessário.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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