cami-la / loops-e-arrays

Repositório do curso Estruturas de Repetição e Arrays com Java. Curso este oferecido pela Digital Innovation one e ministrado por mim.
https://web.digitalinnovation.one/home
1.39k stars 351 forks source link

Ex3 - MaiorMedia #2

Closed marepifanio closed 2 years ago

marepifanio commented 3 years ago

Estou fazendo o Bootcamp TQI da Dio e na aula de resolução do exercício Ex3 - MaiorMedia eu acho que a forma como o contador foi construído poderia apresentar um resultado errado atribuindo o valor Zero para ele fora do laço. caso o usuário do programa digite somente números negativos, ao final da execução o programa vai entregar que o maior número digitado teria sido o Zero, mesmo ele não ter sido digitado.

Eu resolvi esta questão fazendo o seguinte código no método main:

   Scanner sc = new Scanner(System.in);

    int numero, maior, soma;
    double media;
    int i = 1;

    System.out.print("Digite o 1º número:");
    numero = sc.nextInt();
    maior = numero;
    soma = numero;

    do{
        System.out.printf("Digite o %dº número: ", i+1);
        numero = sc.nextInt();
        soma += numero;
        if (numero > maior) maior = numero;
    } while(i++ < 4);

    media = (double)soma / 5;

    System.out.println("O maior número foi: " + maior);
    System.out.println("A média é igual a: " + media);

    sc.close();
cami-la commented 3 years ago

Scanner sc = new Scanner(System.in);

int numero, maior, soma;
double media;
int i = 1;

System.out.print("Digite o 1º número:");
numero = sc.nextInt();
maior = numero;
soma = numero;

do{
    System.out.printf("Digite o %dº número: ", i+1);
    numero = sc.nextInt();
    soma += numero;
    if (numero > maior) maior = numero;
} while(i++ < 4);

media = (double)soma / 5;

System.out.println("O maior número foi: " + maior);
System.out.println("A média é igual a: " + media);

sc.close();

Oi amigo, boa tarde. Fico feliz que tenha pensado dessa forma. Parabéns! :smile:

Como esse curso é introdutório, nesse primeiro momento tentei deixar a lógica mais simples possível para que os Devs praticassem o laço.

O ideal mesmo seria atribuir o valor maior = Integer.MIN_VALUE;, por que independente do valor que o usuário digitar na primeira vez que acontecer o laço de repetição, o valor que foi informado sempre será o maior. Da mesma forma fazemos quando queremos pegar o menor valor menor = Integer.MAX_VALUE; Não expliquei sobre isso por que teria que falar de métodos estáticos, enum...

Rodei o seu código e aparentemente deu super certo! Porém tem repetição de código fora do laço de repetição. Mas como estamos apenas exercitando os loops, está ótimo!

marepifanio commented 3 years ago

Legal @cami-la, muito obrigado pela prontidão. Não conhecia esses métodos da classe Integer, muito interessante. Já coloquei no meu código ;)

cami-la commented 3 years ago

Legal @cami-la, muito obrigado pela prontidão. Não conhecia esses métodos da classe Integer, muito interessante. Já coloquei no meu código ;)

Por nada, fico à disposição! (: