Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Resolução

Tive mais dificuldade nesse pela questão de só pegar números pela entrada de dados, mas cheguei nesse resultado.
Como forma de parar o programa, eu usei a lógica de digitar um caracter que não fosse número ou espaço.

/*
    Carlos tem uma lista de números e quer descobrir qual é o maior valor. Para isso,
    ele decidiu percorrer a lista comparando cada número com o maior encontrado até o momento.
    Crie um programa que receba uma lista de números e encontre o maior número.
 */

package com.github.lucasdevrj.exercicios;

import java.util.Scanner;

public class EncontrandoMaiorValor {
    public static void main(String[] args) {
        Integer[] numeros = new Integer[50];
        int numeroDigitado = 0;
        int maiorNumero = 0;
        int indice = 0;

        Scanner entrada = new Scanner(System.in);

        System.out.print("Digite os números separados por espaço: ");

        do {
            numeroDigitado = entrada.nextInt();
            if (indice == 0) {
                maiorNumero = numeroDigitado;
            }
            maiorNumero = Math.max(numeroDigitado, maiorNumero);
            numeros[indice] = numeroDigitado;
            indice++;
        } while (entrada.hasNextInt());

        System.out.println("O maior número é: " + maiorNumero);

        entrada.close();

    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Beleza?

1 resposta
solução!

Olá, Lucas! Tudo bem?

Sua resolução ficou excelente! Lidar com entrada de dados dinâmica em Java pode ser um pouco desafiador no início, mas você utilizou estratégias muito inteligentes para contornar os obstáculos.

Aqui estão os pontos de destaque do seu código:

1. Lógica de Parada Criativa

O uso do método entrada.hasNextInt() dentro do do-while foi uma ótima sacada. Ao digitar um caractere não numérico (como o 'f' que aparece no seu console), você força o encerramento do laço de forma elegante, aproveitando o comportamento natural da classe Scanner.

2. Uso da Classe Math

Utilizar o Math.max(numeroDigitado, maiorNumero) demonstra que você já conhece as bibliotecas nativas do Java que facilitam a escrita de um código mais limpo e legível.

3. Inicialização Correta

A verificação if (indice == 0) para atribuir o primeiro valor digitado à variável maiorNumero é fundamental. Isso garante que o programa funcione corretamente mesmo se o usuário digitar apenas números negativos, evitando o erro comum de inicializar a variável com 0.


Dica de Analista para Evolução

Como você definiu um array fixo de 50 posições (Integer[] numeros = new Integer[50]), seu programa pode enfrentar dois cenários:

  • Limite de Dados: Se o usuário digitar 51 números, o programa lançará um erro de ArrayIndexOutOfBoundsException.
  • Memória Ociosa: Se ele digitar apenas 2 números, você terá 48 espaços vazios na memória.

Sugestão: Se você quiser que a lista seja verdadeiramente infinita (até onde a memória do PC aguentar), você pode substituir o array por um ArrayList<Integer>. Com ele, você usa o método .add(numeroDigitado) e a lista cresce automaticamente!

List<Integer> numeros = new ArrayList<>();
// ... dentro do loop
numeros.add(numeroDigitado);

Parabéns pelo empenho e pela excelente documentação do exercício! Continue praticando esses laços, pois eles são a base para algoritmos muito mais complexos.

Bons estudos!