publicclassExerc07teste{publicstaticvoidmain(Stringargs[]){Scannerinput=newScanner(System.in);ArrayList<String>aluno=newArrayList<String>(5);ArrayListnota1=newArrayList(5);ArrayListnota2=newArrayList(5);for(inti=0;i<5;i++){aluno.add(JOptionPane.showInputDialog("Digite o nome do aluno"));nota1.add(JOptionPane.showInputDialog("Digite a nota1 do aluno"));nota2.add(JOptionPane.showInputDialog("Digite a nota2 do aluno"));ArrayListn1=nota1;intmedia=(ArrayList[nota1]+ArrayList[nota2])/2;[b]// ta dando erro aqui[/b]}System.out.println(aluno);System.out.println(nota1);System.out.println(nota2);}}
Não sei se é a melhor forma, mas acho que ajuda…
Na hora de pegar os elementos do ArrayList use o método get, entre () informe o indice que deseja, levando em conta que o 1º elemento esta no indice 0, mas se não me engano o get ele retorna um Object (dê uma olhada no Javadoc para conferir), é só converter de novo para String, você pode fazer isso usando o toString() que todo Object tem, depois disso converta a String para o tipo numerico que deseja, segue um exemplo abaixo:
int media = (Integer.parseInt(nota1.get(0).toString())+ Integer.parseInt(nota2.get(0).toString())) /2 ;
publicclassEX7{publicstaticvoidmain(Stringargs[]){ArrayList<Aluno>alunos=newArrayList<Aluno>(5);Alunoaluno;for(inti=0;i<5;i++){aluno=newAluno();aluno.setNome(JOptionPane.showInputDialog("Digite o nome do aluno: "));aluno.setNota1(Float.parseFloat(JOptionPane.showInputDialog("Digite a nota1 do aluno: ")));aluno.setNota2(Float.parseFloat(JOptionPane.showInputDialog("Digite a nota2 do aluno: ")));alunos.add(i,aluno);}for(inti=0;i<5;i++){aluno=alunos.get(i);floatmedia=(aluno.getNota1()+aluno.getNota2())/2;System.out.println(i+" Nome: "+aluno.getNome()+" Média: "+media);}System.exit(0);}}
Deste jeito vc tem um array de alunos, no 1º laço insere os alunos e no 2º percorre o array, calcula a média e imprime.
SDS
M
mid_
Estava tentando fazer um exercício muito semelhante, á diferença é que ao invés de ler 5 alunos, vai ler até o usuário desejar encerrar e na hora de apresentar as médias, vai mostrar os nomes em ordem alfabética. Ficou assim :
importjava.util.*;importjavax.swing.*;publicclassAlunos{publicstaticvoidmain(String[]args){ArrayList<String>Alunos=newArrayList<String>();ArrayListNota1=newArrayList();ArrayListNota2=newArrayList();ArrayList<Double>Media=newArrayList();Stringnome;doublenota1,nota2,media;do{nome=JOptionPane.showInputDialog(null,"Informe o nome do aluno ou aperte <Enter> com o campo em branco para encerrar o programa: ");if(!nome.equals("")){Alunos.add(nome);Collections.sort(Alunos);//Recebendo primeira notanota1=Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a primeira nota do aluno "+nome));Nota1.add(nota1);// Recebendo segunda notanota2=Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a segunda nota do aluno "+nome));Nota2.add(nota2);media=(nota1+nota2)/2;Media.add(media);}}while(!nome.equals(""));for(inti=0;i<Alunos.size();i++){JOptionPane.showMessageDialog(null,"Aluno "+Alunos.get(i)+"\nPrimeira nota: "+Nota1.get(i)+"\nSegunda nota: "+Nota2.get(i)+"\nMédia: "+Media.get(i));}}}
Espero ter ajudado, qualquer coisa, posta aí, abraços.
G
gil_java
Valeuuuuuuuuu Galera
peczenyj
Vc poderia ter uma classe Aluno que contem um atributo nome (String) e um List de notas.
Bastaria vc percorrer a lista somando os valores e dividindo pelo numero de notas para ter a média de um Aluno.
Isso tudo poderia ser validado com testes unitarios assim:
Aluno a = new Aluno("Fabricio Padilha");
a.addNota(10.00);
a.addNota(5.00);
double media = a.calculaMedia();
assert(media == 7.50); /* ou outro tipo de assert, dependendo do framework de teste */