Olá pessoal, to com uma dúvida aqui: preciso criar um programa que automatiza o cálculo de médias dos alunos. Nele o usuário informa, qtd de provas, trabalhos, alunos e o peso das provas. E precisa também imprimir o nome do aluno, seu id estudantil e se foi aprovado ou não.
Estou com uma dúvida aqui: criei uma matriz de [alunos][provas]: Aí nela imprime: A nota do ALUNO 0 é: 5.
Mas em vez de imprimir ALUNO 0, eu queria que imprimisse: Aluno João.
Eu tenho muita dificuldade em lógica…
Meu código:
import java.util.Scanner;
public class Aluno{
public static void main(String [] args){
Scanner sc = new Scanner (System.in);
int alunos = 0, provas = 0;
int [][] notas;
double mediaProvas = 0;
System.out.println("Digite o número de alunos: ");
alunos = sc.nextInt();
System.out.println("Digite o número de provas: ");
provas = sc.nextInt();
notas = new int [alunos][provas];
for (int i = 0; i < notas.length; i++ ) {
for(int p = 0; p < notas[i].length; p++){
System.out.println("Digite a nota " + p + " do aluno " + i + ":");
notas[i][p] = sc.nextInt();
}
}for (int i = 0; i < notas.length; i++ ) {
System.out.println("Notas do aluno: " + i + ":\t");
for (int j = 0; j < notas[i].length; j++){
System.out.println(notas [i][j] + "\t");
}
}
for (int i=0;i<notas[0].length ;i++ ) {
for (int j=0;j<notas.length ;j++ ) {
mediaProvas += notas[j][i];
}
mediaProvas /= notas.length;
System.out.println("A media da prova " + i + " é: " + mediaProvas);
mediaProvas = 0;
}
Você pode criar um outro objeto para guardar o nome dos alunos.
algo como
String[] nomes;
inicializa na hora que digitar a qtd de alunos,
e deixe algo que vai percorrer a qtd de alunos e preencher o array, algo como:
for (int i = 0; i < alunos.length; i++ ) {
// peça para digitar o nome do aluno + i (no caso vai ser 0 o primeiro)
nomes[i] = sc.nextString();
}
ai na hora que tu for mostrar as notas, ficaria algo como:
for (int i = 0; i < notas.length; i++ ) {
System.out.println("Notas do aluno: " + nomes[i] + ":\t"); //aqui a única adição foi o nomes[i]
for (int j = 0; j < notas[i].length; j++){
System.out.println(notas [i][j] + "\t");
}
o melhor seria criar objetos (POJOs) para guarda essas infos e vc conseguiria mais fácil, mas imaginando que isso seja um exercício de faculdade/escola e exigem que exista o command line, faça ± pelo caminho que falei
Sim, eu preciso transformar esse código em orientação a objetos, não posso deixar ele do jeito que tá, é o que pede no enunciado. Obrigado pelas dicas, estarei atualizando o post.
for(int i = 0; i < alunos; i++){
System.out.println("Digite o nome do aluno: ");
String nomes[];
nomes[alunos] = sc.nextLine();
}
Como eu faço para inicializar o array de mesmo tamanho do alunos?
Sempre leia a documentação das classes do Java.
O atributo out da classe System é do tipo PrintStream.
Fiz dessa forma para manter a ortogonalidade, assim como você tem uma variável entrada para ler dados, também tem uma variável saida para escrever dados.