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…
intalunos=0,provas=0;int[][]notas;doublemediaProvas=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=newint[alunos][provas];for(inti=0;i<notas.length;i++){for(intp=0;p<notas[i].length;p++){System.out.println("Digite a nota "+p+" do aluno "+i+":");notas[i][p]=sc.nextInt();}}for(inti=0;i<notas.length;i++){System.out.println("Notas do aluno: "+i+":\t");for(intj=0;j<notas[i].length;j++){System.out.println(notas[i][j]+"\t");}}for(inti=0;i<notas[0].length;i++){for(intj=0;j<notas.length;j++){mediaProvas+=notas[j][i];}mediaProvas/=notas.length;System.out.println("A media da prova "+i+" é: "+mediaProvas);mediaProvas=0;}
ai na hora que tu for mostrar as notas, ficaria algo como:
for(inti=0;i<notas.length;i++){System.out.println("Notas do aluno: "+nomes[i]+":\t");//aquiaúnicaadiçãofoionomes[i]for(intj=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
R
renanalemaum
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(inti=0;i<alunos;i++){System.out.println("Digite o nome do aluno: ");Stringnomes[];nomes[alunos]=sc.nextLine();}
Como eu faço para inicializar o array de mesmo tamanho do alunos?
importjava.io.PrintStream;importjava.util.Scanner;publicclassExemplo{publicstaticvoidmain(String[]args){Exemploprograma=newExemplo();programa.executar();}privatefinalScannerentrada=newScanner(System.in);privatefinalPrintStreamsaida=System.out;publicvoidexecutar(){escrever("Digite o número de alunos: \n");intqtdAlunos=lerInteiro();escrever("Digite o número de provas: \n");intqtdProvas=lerInteiro();Aluno[]alunos=cadastrarAlunos(qtdAlunos,qtdProvas);apresentarNotas(alunos);apresentarMedias(qtdProvas,alunos);}privatevoidapresentarMedias(intqtdProvas,Aluno[]alunos){for(intprova=0;prova<qtdProvas;prova++){doublesoma=0;for(Alunoaluno:alunos){soma+=aluno.notas[prova];}doublemedia=soma/(double)qtdProvas;escrever("A media da prova "+(prova+1)+" é: "+media+"\n");}}privatevoidapresentarNotas(Aluno[]alunos){for(Alunoaluno:alunos){escrever("Notas do "+aluno.nome+":");for(intnota:aluno.notas){escrever(" "+nota);}escrever("\n");}}privateAluno[]cadastrarAlunos(intqtdAlunos,intqtdProvas){Aluno[]alunos=newAluno[qtdAlunos];for(inti=0;i<alunos.length;i++){escrever("Digite o nome do aluno "+(i+1)+": ");Alunoaluno=newAluno(lerTexto(),qtdProvas);for(intn=0;n<qtdProvas;n++){escrever("Digite a nota "+(n+1)+" do "+aluno.nome+": ");aluno.notas[n]=lerInteiro();}alunos[i]=aluno;}returnalunos;}privatevoidescrever(Stringmensagem){saida.print(mensagem);}privateintlerInteiro(){returnInteger.parseInt(lerTexto());}privateStringlerTexto(){returnentrada.nextLine();}}
R
renanalemaum
Não aprendemos ainda sobre o “printstream” é a mesma coisa do System.out.print?
Ah, e quando instancio o vetor para tamanho dos alunos, dá erro ao compilar: int cannot be dereferenced (não pode colocar .length) - Corrigido!
S
staroski
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.