Calculo entre dados de 2 Arrays distintas

12 respostas
M

Olá, gostaria de saber como faço para calcular dados que estão em 2 ArraysLists diferentes.
Já peguei o nome e 2 notas de um aluno, e quero calcular a média das notas, mas como fazer esse cálculo ?
Tem isso até agora:

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

		ArrayList Alunos = new ArrayList();
		ArrayList Nota1 = new ArrayList();
		ArrayList Nota2 = new ArrayList();
		ArrayList Media = new ArrayList();
		
		String nome;
		double nota1, nota2, media;
		
		
		
		 for( ; ; ) {

		   nome = JOptionPane.showInputDialog(null, "Informe o nome do aluno ou aperte <Enter> com o campo em branco para encerrar o programa: ");
		   if(nome.equals("")){ 
		     break; 
		   }
		   Alunos.add(nome);
		   
		 }
		 Collections.sort(Alunos); 
		 
		 
		 for(int i = 0; i < Alunos.size(); i++){
		   nota1 = Double.parseDouble(JOptionPane.showInputDialog(null, "Informe a nota do aluno " + Alunos.get(i)));
		   Nota1.add(nota1);
		   		   
		 }
		 
		 
		 for(int i = 0; i < Alunos.size(); i++){
		   nota2 = Double.parseDouble(JOptionPane.showInputDialog(null, "Informe a segunda nota do aluno " + Alunos.get(i)));
		   Nota2.add(nota2);
		 }
		 
		 for( int i = 0; i < Alunos.size(); i++) {
			 media = ( Nota1.get(i) + Nota2.get(i) ) /2 ;   // está dando erro aqui !
		 }
		 
		 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);
		 }
	
  }
}

Única coisa que preciso é saber como coloco para o programa saber que eu quero calcular o primeiro número da primeira ArrayList com o primeiro da segunda .

Obrigado pela atenção.

12 Respostas

fdpio2

O media também é um arraylist e vc não esta guardando o valor direto tenta quardar em ma variavel antes de enviar para o media.
E o media esta com letra minuscula, em alguns programas meu ele de um erro por causa disso.

M

Mas eu estou guardando a média em uma variável.

B

Use um ArrayList ou converta o objeto retornado por get(i) para Double.

M

Já está como double.

sergiotaborda

Muito cuidado com isto

for( ; ; ) {

		   if(nome.equals("")){ 
		     break; 
		   }
		   
		 }

Isto representa que vc não sabe direito que está a fazer. for não é o controle correto nesta ocasião

do {

             // codigo aqui
		   
	} while(!nome.equals(""));

As notas poderia ser associadas ao aluno. Isso sinplica muito as coisas

class Aluno 

   List<Double> notas = new ArrayList<Double>();

   public void addNota(Double nota){
     notas.add(nota); 
   }

   public double media(){
           if (notas.isEmpty(){
              return 0;
           }
           double sum =0;
           for (Double n : notas){
                  sum += n;
            }
          return sum/notas.size();
   }

em opção vc pode ir calculando a média a cada adição

class Aluno 

   List<Double> notas = new ArrayList<Double>();
   double media =0;
   public void addNota(Double nota){
     notas.add(nota); 
    media = (media * (notas.size()-1) + niota)/ notas.size() ;
   }

  public double media(){
    return media;
  }
M

Mas como eu vou calcular a média a cada adição se primeiro ele vai receber as primeiras notas depois as segundas ?

sergiotaborda

A ordem não é relevante.

for(Aluno aluno :  Alunos){  
       nota1 = Double.parseDouble(JOptionPane.showInputDialog(null, "Informe a nota do aluno " +aluno);  
       aluno.add(nota1);  
                     
}
M

Tudo bem, até essa parte de pegar a nota está feita, eu não consigo entender, como pegar as duas notas do aluno e fazer a média, como eu “chamo” essa nota?
estou tentando com Nota1.get(i), mas não funciona, existe uma maneira de saber qual nota está armazenada em Notas.get(1), etc ?

sergiotaborda

mid_:
Tudo bem, até essa parte de pegar a nota está feita, eu não consigo entender, como pegar as duas notas do aluno e fazer a média, como eu “chamo” essa nota?
estou tentando com Nota1.get(i), mas não funciona, existe uma maneira de saber qual nota está armazenada em Notas.get(1), etc ?

Vc não precisa de saber a nota. Vc precisa de saber a média. vc simplesmente chama aluno.media() e pronto.
Mas se vc quer mostrar isso…

public class Aluno {

String nome;

public Aluno(String nome){
 this.nome = nome;
}

public String toString(){
 return nome;
}

// o resto como defini antes

public Double nota (int index){
   reuturn notas.get(index);
}

public int notasCount(){
  return notas.size();
}
} 

 public class Alunos {  
 
   public static void main (String[] args) {  
  
         ArrayList alunos = new ArrayList();  


            String  nome;
       do {  

           nome = JOptionPane.showInputDialog(null, "Informe o nome do aluno ou aperte <Enter> com o campo em branco para encerrar o programa: ");  

          alunos.add(new Aluno(nome));  
 
 }  

     
   for(Aluno aluno : alunos){  
              Double nota = Double.parseDouble(JOptionPane.showInputDialog(null, "Informe a primeira nota do aluno " + aluno));  
              aluno.add(nota1);  
              nota = Double.parseDouble(JOptionPane.showInputDialog(null, "Informe a primeira nota do aluno " + aluno));  
             aluno.add(nota);    
   }  


   for(Aluno aluno : alunos){  
         JOptionPane.showMessageDialog(null, "Aluno " + aluno + "\nPrimeira nota:  " + aluno.nota(0)+ "\nSegunda nota: "+aluno.nota(1)+ "\nMédia: "+ aluno.media());  
  }  
    
   }  
 }
M

Para ser sincero, ainda não consegui fazer, mas obrigado pela ajuda mesmo assim, abraços.

G

tb estou com este problema será q vc conseguiu resolver

Valeu!

M

Ainda não, assim que conseguir posto aqui para você ver como ficou.

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