Não to conseguindo fazer uma média usando array

5 respostas
G
to tentando fazer a seguinte média
public class Exerc07teste {
   
      
      public static void main(String args[])
      {
       
        Scanner input = new Scanner (System.in );
         
       
         ArrayList<String> aluno = new ArrayList<String>(5);    
         ArrayList nota1 = new ArrayList(5);
         ArrayList nota2 = new ArrayList(5);
         
         
         for (int i = 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"));
          ArrayList n1 = nota1;
          
        int media = (ArrayList[nota1]+ ArrayList[nota2]) /2 ; [b] // ta dando erro aqui[/b]
         
        
          } 
         System.out.println(aluno); 
         System.out.println(nota1);
         System.out.println(nota2);  
        


  
          }
    }

se alguem puder dar uma dica
Agradeço
valeu

5 Respostas

V

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 ;

L

Minha sugestão.

public class Aluno {
	private String nome;
	private float nota1, nota2;
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public float getNota1() {
		return nota1;
	}
	public void setNota1(float nota1) {
		this.nota1 = nota1;
	}
	public float getNota2() {
		return nota2;
	}
	public void setNota2(float nota2) {
		this.nota2 = nota2;
	}
}
public class EX7 {   
            
	public static void main(String args[]){   
         
        ArrayList<Aluno> alunos = new ArrayList<Aluno>(5);       
        Aluno aluno;               
        for (int i = 0; i < 5; i++){ 
        	aluno = new Aluno();
        	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 (int i = 0; i < 5; i++){   
        	aluno = alunos.get(i);
        	float media = (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

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 :

import java.util.*;
import javax.swing.*;
public class Alunos {
	public static void main (String[] args) {

		ArrayList<String> Alunos = new ArrayList<String>();
		ArrayList Nota1 = new ArrayList();
		ArrayList Nota2 = new ArrayList();
		ArrayList<Double> Media = new ArrayList();
		
		String nome;
		double nota1, 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 nota
			   nota1 = Double.parseDouble(JOptionPane.showInputDialog(null, "Informe a primeira nota do aluno "+ nome));
			   Nota1.add(nota1);
			   // Recebendo segunda nota
			   nota2 = 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(int i = 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

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 */

Sobre JUnit:
http://guj.com.br/java.tutorial.artigo.40.1.guj

Assert:
http://guj.com.br/java.tutorial.artigo.23.1.guj

Boa sorte ;-)

Criado 28 de maio de 2008
Ultima resposta 29 de mai. de 2008
Respostas 5
Participantes 5