GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Somar elementos de uma list


#1

estou tentando somar os números de uma ArrayList, já tentei várias coisas e estou confusa
aqui segue o código:

public class CoffeeCalendar extends javax.swing.JFrame {
 Collection dailyCoffeeTimes = new ArrayList();
private void coffeeTimesAnswerKeyPressed(java.awt.event.KeyEvent evt) {                                             
    if(evt.getKeyCode() == KeyEvent.VK_ENTER){
  

        try{ 
  
            if(coffeeTimesAnswer.getText().length() != 0 ){
                try{
                   
                    long valor = Long.parseLong(coffeeTimesAnswer.getText());
                coffeeTimesAnswer.setText("");
                dailyCoffeeTimes.add(coffeeTimesAnswer.getText());
                System.out.print(dailyCoffeeTimes.size());}//testa para ver se está adicionando o numeros do textfield na list
                catch (NumberFormatException ex){
                JOptionPane.showMessageDialog(null, "This field only accept numbers" ,"Info",JOptionPane.INFORMATION_MESSAGE); 
            coffeeTimesAnswer.grabFocus();// foca o campo
            coffeeTimesAnswer.setText(""); //limpa o campo
                    }}
             
        } 
        catch(Exception e) {
                  
        }
        
    }

public void somaPontos(){
   Integer i = Integer.parseInt(dailyCoffeeTimes.getText()); 

  int sum = dailyCoffeeTimes.stream().forEach(i -> i.sum());
       
        }
   
}

Eu sei que está meio confuso, é porque eu estava testando algumas coisas
Mas como eu deveria usar o sum() corretamente? e porque o .getText() está dando erro?


#2

Onde está a soma?

Basicamente. você precisa percorrer a lista e ir somando os valores. Não entendo a dificuldade que está tendo.


#3

Não está do modo mais otimizado, mas apenas essas linhas fazem o proposto

	Scanner s = new Scanner(System.in);
	
	List<Long> lista = new ArrayList<>();
	System.out.print("Digite seu primeiro número: ");
	long n1 = s.nextLong();
	lista.add(n1);
	System.out.print("Digite seu segundo número: ");
	long n2 = s.nextLong();
	lista.add(n2);
	
	long aux = 0;
	
	for(int n = 0; n < lista.size(); n++) {
		aux = aux + lista.get(n);
	}
	
	System.out.println(aux);

#4

eu já tentei parecido :

    public int somaPontos(){

        int sum = 0;
        for(int i = 0 ; i < dailyCoffeeTimes.size(); i++) {
            sum += dailyCoffeeTimes.get(i);
        } 
        return sum;
     
        }

ele da erro no get(i)


#5

A lista está aonde?


#6
public class CoffeeCalendar extends javax.swing.JFrame {
 Collection dailyCoffeeTimes = new ArrayList();

#7

O erro ocorre pois a interface Collection, do package java.util não contém um método chamado get.
Este método está presente na interface List, também do java.util e que é a estrutura que você precisa para realizar essa tarefa.
Das duas uma:

  • Muda a declaração para List
  • Faz um cast explícito no momento em que precisar dos dados da collection

Bônus: usa Iterator

Iterator it = dailyCoffeeTimes.iterator();
while(it.hasNext()) {
    aux += it.next(); //Isso é o mesmo que aux = aux + it.next;
}

#8

Isso só vai funcionar caso a lista seja do tipo numérico, né? :face_with_raised_eyebrow:


#9

Mais um opção de somar uma lista é usar as Streams do Java8.

listaDeIntegers.stream().mapToInt(Integer::intValue).sum();


listaComElementoInteger.stream().mapToInt(i -> i.getElementoInteger.intValue()).sum();

#10

Sim, pelo contexto, é o caso.


#11

Listas não aceita dado primitivo.

Se tiver numero para fazer soma você precisa transformar o valor na lista de integer to int usando o Streams conforme dito pelo Raphaeloneves


#12
Integer i = 0;
i+= 10;

As linhas acima compilam ou não? Se elas compilam (e, sim, elas compilam) o código que eu sugeri funciona.
Isso por conta de uma particularidade dos wrappers de converter valores primitivos em objetos em tempo de execução, sem necessidade de cast explícito.
É óbvio que ela precisará definir o tipo para a List, mas, isso é muito mais tranquilo.

A propósito.

import java.util.ArrayList;
import java.util.List;

public class Blablabla {
    public static void main(String[] args) {
        List<Integer> lista = new ArrayList<Integer>();
        lista.add(1);
        lista.add(2);
        lista.add(3);
        lista.add(4);
        lista.add(5);
        lista.add(6);
        int soma = 0;
        for(int i = 0; i < lista.size(); i++) {
            soma += lista.get(i);
        }
        System.out.println("A soma dos elementos da lista é: " + soma);
    }
}

#13

eu tenho uma duvida com relaçao a isso…

imagina esta mesma lista que voce fez, porem eu te dou um resultado. Ex: 5

ai eu tenho somar do elemento 1 ao final do 2 ao final do 3 ao final e assim por diante…

como eu faço ??

Obs: O usuario vai digitar o tamanho da lista…


#14

Não entendi, por que do

Como assim?

Que final?


#17

Vai nessem ue topico