1
resposta

Notas dos Alunos

Dei uma mudada no exercicio e acho que me compliquei o que não precisava haha, mas foi bom para treinar.

import java.util.Scanner;

public class Principal {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Aluno aluno1 = new Aluno();

    System.out.println("Digite o nome do primeiro aluno:");
    aluno1.nome = scanner.nextLine();
    System.out.println("Digite a nota a primeira prova:");
    aluno1.nota1 = scanner.nextDouble();
    System.out.println("Digite a nota da segunda prova:");
    aluno1.nota2 = scanner.nextDouble();

    aluno1.exibirInformacoes();

    if (aluno1.calculaMedia() >= 7) {
        System.out.println("Aluno aprovado.");
    } else {
        System.out.println("Aluno reprovado.");
    }
}

}

public class Aluno {
String nome;
double nota1;
double nota2;

public double calculaMedia() {
    double media = (nota1 + nota2) / 2;
    return  media;
}

public void exibirInformacoes() {
    System.out.println("Nome do aluno:" + nome);
    System.out.printf("Nota da primeira prova: %.1f \n" ,nota1);
    System.out.printf("Nota da segunda prova: %.1f \n" ,nota2);
    System.out.println("Média do aluno:" + calculaMedia());
}

}

1 resposta

Olá, Pedro! Tudo bem?

Não se preocupe, essa "complicada" que você deu é, na verdade, um excelente sinal! Ao adicionar o Scanner, você transformou um exercício estático em um programa interativo, o que é um passo fundamental para entender como os sistemas funcionam na vida real.

Seu código está muito bem estruturado e demonstra que você compreendeu os pilares da Orientação a Objetos:

  • Separação de Responsabilidades: A classe Aluno cuida dos dados e da lógica de cálculo, enquanto a classe Principal gerencia a interação com o usuário. Isso é exatamente o que pregamos em Java.
  • Encapsulamento de Lógica: O método calculaMedia() centraliza a regra de negócio. Se amanhã a média mudar para uma média ponderada, você só precisará alterar um lugar no código.
  • Uso de Formatação: O uso do System.out.printf("%.1f \n", nota1) mostra que você já está atento aos detalhes de exibição, garantindo que as notas não apareçam com dízimas infinitas no console.

Uma dica de "mestre" para evitar problemas com o Scanner:

Notei que você usou o scanner.nextDouble(). Em Java, quando usamos métodos que leem números e depois tentamos ler um texto (como em um loop), o "Enter" que você aperta pode ficar "preso" no teclado e pular a próxima leitura de nome.

Para deixar seu código ainda mais robusto, uma boa prática é sempre dar um scanner.nextLine() vazio logo após ler um número, ou ler tudo como nextLine() e converter para número depois.

Fora isso, seu treino foi nota 10 (ou melhor, nota 7 e aprovado!). Continue explorando e se desafiando.

Espero que possa ter lhe ajudado!