How to add contiguous numbers to an array?

4

I have array of numbers being typed by the user, and I need to add the numbers of this array .

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

public class Questao3 {
/*3.Fazer um algoritmo que:
•Leia um número indeterminado de linhas contendo cada uma a idade de um indivíduo.
•A última linha que não entrará nos cálculos, contém o valor da idade igual a zero.
•Calcule e escreva a idade média deste grupo de indivíduos.
•Escreva também a maior idade e a menor*/
    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);
        ArrayList <Integer> lista = new ArrayList<>();
        int soma = 0;

        System.out.println("Digite 0 para terminar");

        for (int i = 0; i < 10;) {
            System.out.print("Digiten um número: ");
            int num1 = s.nextInt(); 
                if(num1 == 0){break;}
            lista.add(num1);
        }
        for (Integer integer : lista) {
            System.out.print(integer);
        }
        int tamanho = lista.size();
        System.out.println(tamanho);
    }
}
    
asked by anonymous 07.01.2015 / 19:42

2 answers

5

Add as you get the data.

import java.util.*;
import java.lang.*;
import java.io.*;

public class Main {
/*3.Fazer um algoritmo que:
•Leia um número indeterminado de linhas contendo cada uma a idade de um indivíduo.
•A última linha que não entrará nos cálculos, contém o valor da idade igual a zero.
•Calcule e escreva a idade média deste grupo de indivíduos.
•Escreva também a maior idade e a menor*/
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        ArrayList<Integer> lista = new ArrayList<>();
        int soma = 0;
        int menor = 999;
        int maior = 0;

        System.out.println("Digite 0 para terminar");

        for (;;) {
            System.out.println("Digite um número: ");
            int num = s.nextInt(); 
            if(num == 0) {
                break;
            }
            lista.add(num);
            soma += num;
            maior = Math.max(maior, num);
            menor = Math.min(menor, num);
        }
        for (Integer integer : lista) {
            System.out.println(integer);
        }
        System.out.println("A média de idade é " + (soma / lista.size()));
        System.out.println("A maior idade é " + maior);
        System.out.println("A menor idade é " + menor);
    }
}

See working on ideone .

    
07.01.2015 / 20:06
4

Before looking at the sum, I believe your logic is wrong. The statement says that the input will be an indeterminate number of values and its loop goes from 0 to 9.

To sum all indexes, just loop through 0 to the size of this array and use the get(int index) method to get the element by index. Example:

for(int i = 0; i < meuArrayList.size(); i++)
    soma += meuArrayList.get(i);

Or simply:

for(int idade : meuArrayList)
    soma += idade;

In the exercise in question you would need two loops , one infinity and another that takes as a stop condition the size of ArrayList .

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

public class SomandoArray {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        ArrayList<Integer> idades = new ArrayList<>();

        int idade;

        /* Loop para inserir 'n' elementos no array */
        System.out.println("Digite 0 para terminar");
        for(;;){
            System.out.println("Digite um número: ");
            if((idade = input.nextInt()) == 0)
                break;
            idades.add(idade);
        }

        int totalIndividuos = idades.size();
        if(totalIndividuos > 0){

            int soma = 0, maior, menor;
            maior = menor = idades.get(0); 

            /* Loop para somar e encontrar a maior/menor idade */
            for(int _idade : idades){
                soma += _idade;
                if(_idade > maior) maior = _idade;
                if(_idade < menor) menor = _idade;
            }

            System.out.println("Media: " + soma/totalIndividuos);
            System.out.println("Maior: " + maior + " - Menor: " + menor);
        }  
    }
}

I had proposed a suggestion without the use of ArrayList previously (similar to Maniero's answer .

    
07.01.2015 / 21:32