estou tentando somar os números de uma ArrayList, já tentei várias coisas e estou confusa
aqui segue o código:
publicclassCoffeeCalendarextendsjavax.swing.JFrame{CollectiondailyCoffeeTimes=newArrayList();privatevoidcoffeeTimesAnswerKeyPressed(java.awt.event.KeyEventevt){if(evt.getKeyCode()==KeyEvent.VK_ENTER){try{if(coffeeTimesAnswer.getText().length()!=0){try{longvalor=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 listcatch(NumberFormatExceptionex){JOptionPane.showMessageDialog(null,"This field only accept numbers","Info",JOptionPane.INFORMATION_MESSAGE);coffeeTimesAnswer.grabFocus();// foca o campocoffeeTimesAnswer.setText("");//limpa o campo}}}catch(Exceptione){}}publicvoidsomaPontos(){Integeri=Integer.parseInt(dailyCoffeeTimes.getText());intsum=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?
Basicamente. você precisa percorrer a lista e ir somando os valores. Não entendo a dificuldade que está tendo.
S
STNeto
Não está do modo mais otimizado, mas apenas essas linhas fazem o proposto
Scanners=newScanner(System.in);List<Long>lista=newArrayList<>();System.out.print("Digite seu primeiro número: ");longn1=s.nextLong();lista.add(n1);System.out.print("Digite seu segundo número: ");longn2=s.nextLong();lista.add(n2);longaux=0;for(intn=0;n<lista.size();n++){aux=aux+lista.get(n);}System.out.println(aux);
LilySny
eu já tentei parecido :
publicintsomaPontos(){
intsum=0;for(inti=0; i < dailyCoffeeTimes.size(); i++) {sum+=dailyCoffeeTimes.get(i);}returnsum;}
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
Iteratorit=dailyCoffeeTimes.iterator();while(it.hasNext()){
aux+=it.next(); //Isso é o mesmo que aux = aux + it.next;
}
R
Rodrigo_Marden
Isso só vai funcionar caso a lista seja do tipo numérico, né?
raphaeloneves1 like
Mais um opção de somar uma lista é usar as Streams do Java8.
Se tiver numero para fazer soma você precisa transformar o valor na lista de integer to int usando o Streams conforme dito pelo Raphaeloneves
darlan_machado
Integeri=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.
importjava.util.ArrayList;importjava.util.List;publicclassBlablabla{publicstaticvoidmain(String[]args){List<Integer>lista=newArrayList<Integer>();lista.add(1);lista.add(2);lista.add(3);lista.add(4);lista.add(5);lista.add(6);intsoma=0;for(inti=0;i<lista.size();i++){soma+=lista.get(i);}System.out.println("A soma dos elementos da lista é: "+soma);}}
K
Kevin_Maia
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…