ganhando_produtividade_com_Stream_API_Java icon indicating copy to clipboard operation
ganhando_produtividade_com_Stream_API_Java copied to clipboard

Desafio 19

Open IgorTudisco opened this issue 1 year ago • 2 comments

https://github.com/IgorTudisco/DIO---Trilha-Java-B-sico/tree/main/Ganhando_Produtividade_com_Stream_API/Desafio/DesafioStreamAPI/src/desafiostreamapi/desafio

Não entendi como usar o Stream para resolver esse desafio.

Se possível, gostaria que me explicasse essa parte.


package desafiostreamapi.desafio;

import java.util.*;
import java.util.function.*;

public class D19 {
    
    public static void main(String[] args) {
        
        List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);
        
        BinaryOperator<Integer> somaTodos = (n1, n2) -> n1 + n2;
        
        Consumer<Integer> printSoma = n1 -> {
            Integer soma;
            if(n1 % 3 == 0){
                soma = numeros.stream().reduce(0, somaTodos);
                System.out.println(soma);
            } else if (n1 == 5){
                System.out.println(n1);
            }
        }; 
        
        numeros.stream().forEach(printSoma);
        
        
        
    }
    
}

// Desafio -> https://github.com/digitalinnovationone/ganhando_produtividade_com_Stream_API_Java/tree/master/src/stream_api

IgorTudisco avatar Jul 25 '24 15:07 IgorTudisco

olá, amigo

aqui uma forma de resolver O enunciado fala que deve-se somar os número divisíveis por 3 E 5, logo, deve ser divisível pelos dois ao mesmo tempo.

// Desafio 19 - Encontre a soma dos números divisíveis por 3 e 5:


public static int sumIfDivisibleBy3and5(List<Integer> list) {
    var result = list.stream()
            .filter(n -> n % 3 == 0 && n % 5 == 0)
            .mapToInt(Integer::intValue)
            .sum();
    return result;

fgmarcal avatar Aug 09 '24 14:08 fgmarcal

Olá. Fiz dessa maneira, o resultado com essa lista da 0, mas caso você coloque um 15 e um 30 para testar, nota que o resultado é 45.

 public class Desafio19SomaNumsDiv3e5 {
    public static void main(String[] args) {
        List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);

        int numsDiv3e5 = numeros.stream()
                .filter(n -> n%3 == 0 && n%5 == 0)
                .reduce(0, Integer::sum);

        System.out.println("Soma dos números divisíveis por 3 e 5: " + numsDiv3e5);
    }
} 

espero ter ajudado. Abraço.

claudiocsfilho avatar Sep 13 '24 18:09 claudiocsfilho