Estou precisando imprimir quais matérias o aluno reprovou e foi aprovado no final do calculo de média. (A média tem que ser maior ou igual a 7.5).
Porém eu apenas consegui com que fosse imprimido logo após o cálculo, e mesmo assim não está organizado, apenas apareça a 1º matéria, as outras não.
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String disciplinas[] = {"Matemática", "Português", "História", "Geografia", "Física", "Química"};
int qtdNotas = 3;
double media = 0;
System.out.println("CÁLCULO DE NOTAS\n");
for (String disc : disciplinas) {
double soma = 0;
for (int i = 1; i <= qtdNotas; i++) {
System.out.printf("Digite a %dª nota de %s: ", i, disc);
soma += sc.nextDouble();
media = soma / qtdNotas;
}
System.out.printf("Média: %.2f\n", media);
for (int i = 0; i < 6; i++)
if(media > 7.5){
System.out.println("------------");
System.out.printf("APROVADO EM %s", disciplinas[i]);
System.out.println("\n------------");
}
else{
System.out.println("------------");
System.out.printf("REPROVADO EM %s", disciplinas[i]);
System.out.println("\n------------");
}
}}}
Por que fez esse for? Ele vai verificar a mesma média 6 vezes, não faz sentido. Se for para imprimir logo depois do cálculo, seria assim:
Scanner sc = new Scanner(System.in);
String disciplinas[] = {"Matemática", "Português", "História", "Geografia", "Física", "Química"};
int qtdNotas = 2; // cada disciplina tem 2 notas
// para cada disciplina, leia a quantidade de notas
for (String disc : disciplinas) {
double soma = 0;
for (int i = 1; i <= qtdNotas; i++) {
System.out.printf("Digite a %dª nota de %s:\n", i, disc);
soma += sc.nextDouble();
}
double media = soma / qtdNotas;
System.out.printf("Média: %.2f\n", media);
if (media >= 7.5) {
System.out.printf("------------\nAPROVADO EM %s\n------------\n", disc);
} else {
System.out.printf("------------\nREPROVADO EM %s\n------------\n", disc);
}
}
Agora, se for para imprimir só no final, aí precisa guardar as médias. Uma ideia simples seria usar outro array, com o mesmo tamanho do array de disciplinas. Aí você faz um loop para ler as notas e calcular as médias, e outro para mostrar:
Scanner sc = new Scanner(System.in);
String disciplinas[] = {"Matemática", "Português", "História", "Geografia", "Física", "Química"};
double medias[] = new double[disciplinas.length]; // uma média para cada disciplina
int qtdNotas = 2; // cada disciplina tem 2 notas
// para cada disciplina, leia a quantidade de notas
for (int i = 0; i < disciplinas.length; i++) {
String disc = disciplinas[i];
double soma = 0;
for (int j = 1; j <= qtdNotas; j++) {
System.out.printf("Digite a %dª nota de %s:\n", j, disc);
soma += sc.nextDouble();
}
// guarda a média no array de médias
medias[i] = soma / qtdNotas;
}
// agora que eu li todas as notas e calculei todas as médias, mostro elas
for (int i = 0; i < disciplinas.length; i++) {
String disc = disciplinas[i];
double media = medias[i];
System.out.printf("Média: %.2f\n", media);
if (media >= 7.5) {
System.out.printf("------------\nAPROVADO EM %s\n------------\n", disc);
} else {
System.out.printf("------------\nREPROVADO EM %s\n------------\n", disc);
}
}