[RESOLVIDO] Soma array lista

5 respostas Resolvido
javaarraylist
G

Estou com este codigo, só que queria saber como somar os pesos dos animais e dividir pelo números de animais, estou conseguindo só que ele está dando o resultado de um só peso.

import java.util.ArrayList;
    import java.util.Scanner;

    public class TesteAnimal {
    public static void main(String[] args) {
    Scanner ler = new Scanner(System.in);
    ArrayList <Animal> animais = new ArrayList<>();
    int resp = 1;
    float soma = 0;
    float resul = 0;
    String busca;
    System.out.println("DIGITE 1 PARA CADASTRAR E 0 PARA SAIR");
    resp = ler.nextInt();

    //INCLUSÃO DE ARRAYLIST
     while(resp != 0){
       int codigo;
       String nome;
       float peso;
       int idade;
       int total;
       String habitate;
       int data;

       System.out.println("Digite o codigo do animal: ");
       codigo = ler.nextInt();
       System.out.println("Digite o nome do animal: "); 
       nome = ler.next();
       System.out.println("Qual o peso do animal: ");
       peso = ler.nextFloat();
       System.out.println("Digite a idade do animal: ");
       idade = ler.nextInt();
       System.out.println("Digite quanto tempo este animal vive: ");
       total = ler.nextInt();
       System.out.println("Digite o habitate animal: ");
       habitate = ler.next();
       System.out.println("Digite a data do cadastro: ");
       data = ler.nextInt();
       animais.add(new Animal(codigo, nome, peso, idade, total, habitate, data));
       System.out.println("DIGITE 1 PARA CADASTRAR E 0 PARA SAIR: ");
       resp = ler.nextInt();
        }

    //IMPRESSÃO DA LISTA
       for (int i = 0; i < animais.size(); i++){
        System.out.println("\nCodigo: " + animais.get(i).getCodigoAnimal());
        System.out.println("NOME: " + animais.get(i).getNome());    
        System.out.println("PESO: " + animais.get(i).getPeso());
        System.out.println("IDADE: " + animais.get(i).getIdade());
        System.out.println("HABITATE: " + animais.get(i).getHabitate());
        System.out.println("TEMPO DE VIDA: " + animais.get(i).getTotalVida());
        System.out.println("DATA CADASTRO: " + animais.get(i).getData());
            }    

    //SISTEMA DE BUSCA
       System.out.println("\nDigite o nome do animal a ser pesquisado: ");    
       String nome = ler.next();  
       for(int i = 0; i < animais.size(); i ++){
        if(animais.get(i).getNome().equals(nome)){  
          System.out.println("\nCodigo: " + animais.get(i).getCodigoAnimal());
          System.out.println("NOME: " + animais.get(i).getNome());    
          System.out.println("PESO: " + animais.get(i).getPeso());
          System.out.println("IDADE: " + animais.get(i).getIdade());
          System.out.println("TEMPO DE VIDA: " + animais.get(i).getTotalVida());    
          System.out.println("HABITATE: " + animais.get(i).getHabitate());
          System.out.println("DATA CADASTRO: " + animais.get(i).getData());  
           break;  
          }}  

    //SISTEMA DE ALTERAÇÃO
      /* System.out.println("\nDigite o habitate que deseja saber qual o animal com maior tempo de vida: ");    
       String habitate = ler.next();  */

         for(int i = 0; i < animais.size(); i++){

            resul = (animais.get(i).getPeso() + animais.get(i).getPeso()) / animais.size();        
             System.out.println("A média de peso é: " + resul);
             break;               
                    }


        }}

5 Respostas

Mike
Solucao aceita

Você tem que ir somando o valor da váriavel a cada iteração

Segue um exemplo com 3 animais:

Animal 1 = 10 kg;

Animal 2 = 20 kg;

Animal 3 = 30 kg;

Você esta fazendo assim:

resultado = 10/3;
resultado = 20/3;
resultado = 30/3;

Maneira correta:

resultado = resultado + 10;//"resultado igual a 10
resultado = resultado + 20;// resultado igual a 30 (10 + 20)
resultado = resultado + 30;// resultado igual a 60 (30 + 30)

resultado = resultado/3; //média igual a 20 (60/3)

Agora só adaptar para o seu código

G

Me desculpa cara, não entendi.

G

Se for assim ainda da erro:

for(int i = 0; i < animais.size(); i++){
              soma += animais.get(i).getPeso();
              resul = soma/animais.size();
              System.out.println("A média de peso é: " + resul);
              break;               
                   }
Mike

Que erro da?

No for fica só a soma

A média só é calculada depois que é feito toda a soma, então ela tem que ficar de fora do for, não?

G

Mike, deu certo estava fazendo a soma dentro do for por isso dava erro, era só colocar do lado de fora! Obrigado pela ajuda.

Criado 24 de outubro de 2018
Ultima resposta 24 de out. de 2018
Respostas 5
Participantes 2