Coder Social home page Coder Social logo

Comments (15)

cami-la avatar cami-la commented on August 11, 2024 1

Camila, perdoe-me querida, eu não expressei claramante a minha dúvida quando coloquei que não consegui visualizar na saída a formatação que colocou no final. Eu me referi apenas à formatação numérica que colocou na linha 74. Mesmo assim, levei em consideração sua explicação.

Amigo, nem se preocupe. Estou aqui pra ajudar.
Estou tentando deixar tudo o mais explicativo possível.

Aaaah, agora acho que entendi. No caso, você não entendeu o System.out.printf("%3d %10d\n", entry.getKey(), entry.getValue())
Vou te deixar um link que explica sobre formatação de Strings: http://www.bosontreinamentos.com.br/java/metodos-printf-print-e-println-curso-de-programacao-em-java/

Caso você queira se aprofundar, neste curso, eu explico com detalhes sobre isso: https://web.dio.me/course/entrada-e-saida-de-arquivos-io-em-java/learning/91871c29-e97e-4434-be0e-71aa71df80f3/?back=/browse

from curso-dio-intro-collections.

cami-la avatar cami-la commented on August 11, 2024

Oi, boa tarde! Veja se agora ficou melhor:

import java.util.*;

public class Main {
  public static void main(String[] args) {
    List<Integer> resultadoDosLancamentos = lancamentoDeDados();
    //System.out.println(resultadoDosLancamentos);

    Map<Integer, Integer> lancamentosOrganizadosPorGrupo = lancamentosOrganizados(lancamentoDeDados());
    //System.out.println(lancamentosOrganizadosPorGrupo);

    simulacaoDeProcessamento();

    exibindoResultadoDosLancamentosAgrupados(lancamentosOrganizadosPorGrupo);
    
  }

  //Método que irá gerar os números aleatórios simulando o lançamento de um dado 100 vezes.
  private static List<Integer> lancamentoDeDados(){

    //Classe Java que gera números aleartórios
    Random lancadorDeDados = new Random();
    
    //Lista que irá armazenar todos os valores gerados
    List<Integer> todosResuldadoDosLancamentos = new ArrayList<>();
    for(int i = 0; i < 100; i++) {
      //Esse valor deverá ser entre 1 e 6.
      int resuldadoDoLancamento = lancadorDeDados.nextInt(6) + 1;
      //Adicionando o resuldadoDoLancamento dentro da lista de lançamentos
      todosResuldadoDosLancamentos.add(resuldadoDoLancamento);
    }

    return todosResuldadoDosLancamentos;
  }

  //Método que irá organizar os resultados dos lançamenots em grupos de 1 a 6 (resultados possíveis de um dado)
  private static Map<Integer, Integer> lancamentosOrganizados(List<Integer> lancamentosDeDados){
    //Map que irá armazenar os resultados dos lançamentos de acordo com o resultado.
    Map<Integer, Integer> resultadoDosLancamentosOrganizados = new HashMap<Integer, Integer>();

    //Vamos pegar a lista com todos os lançamentos e organizar dentro de um map chave e valor.
    for (Integer resultadoDoLancamento : lancamentosDeDados) {
      //Se ao navegar na lista, o elemento armazenado na lista (que é o resultado do lançamento) já tiver aparecido:
      if (resultadoDosLancamentosOrganizados.containsKey(resultadoDoLancamento)) {
        //Pega esse resultado e coloca dentro do Map como key e informa, acrescentando +1 no value para indicar que esse resultado apareceu mais uma vez.
        resultadoDosLancamentosOrganizados.put(resultadoDoLancamento, (resultadoDosLancamentosOrganizados.get(resultadoDoLancamento) + 1));
      } else { //Se foi a primeira vez que o resultado apareceu na lista
        //Pega esse resultado e coloca como key de um elemento do Map, e informa no valor que ele apareceu pela primeira vez, indicando 1.
        resultadoDosLancamentosOrganizados.put(resultadoDoLancamento, 1);
      }
    }

    return resultadoDosLancamentosOrganizados;
  }

  //Simulando como se o lançador demorasse um tempo para lançar e contabilizar.
  private static void simulacaoDeProcessamento() {
    System.out.print("Processando");
    for (int i = 0; i < 5; i++) {
      try {
        Thread.sleep(1000);
        System.out.print(".");
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }

  //Exibindo o resultado dos lançamentos agrupados.
  private static void exibindoResultadoDosLancamentosAgrupados(Map<Integer, Integer> resuldadoDosLancamentosAgrupados){
    System.out.println("\nValor " + " Quant. de vezes");
    for (Map.Entry<Integer, Integer> entry : resuldadoDosLancamentosAgrupados.entrySet()) {
      //Formatando a saída no console com espaçamento. 
      // Pegando Key (Valor da face do dado) e Value (quantas vezes deu o número dessa face nos lançamentos.)
      System.out.printf("%3d %10d\n", entry.getKey(), entry.getValue());
    }
  }

}

from curso-dio-intro-collections.

natan20200679 avatar natan20200679 commented on August 11, 2024

OI Camila! Olha, as instruções das linhas 11 e 13 podem ser omitidas, já que são definidas nas linhas 56 e 69? A instrução da linha 5 não é pleonástica (desnecessária), já que a da linha 24 faz o mesmo? Tu podes me relembrar o porque da formatação numérica na última linha de instrução?

from curso-dio-intro-collections.

cami-la avatar cami-la commented on August 11, 2024

Oi amigo, vamos lá.
Não sei se entendi bem sua dúvida, mas creio que você está confundindo a declaração do método com a invocação do método.

Nas linhas 18, 36, 56 e 29 são as criações dos métodos.
Nas linhas 5, 8, 11 e 13 são as invocação desses métodos. Tente comentar essas linhas e veja o que acontece.

Seguinte: O método main (linha 4) é o método que será a porta de entrada do nosso sistema. A máquina virtual JVM vai varrer esse método, executando tudo o que estiver dentro dele, de maneira sequencial.
Assim, se apagar as linhas 5, 8, 11 e 13 a JVM náo irá saber que você quer executar os métodos criados nas linhas 18, 36, 56 e 29.

Sobre a formatação númerica, formatei para o resultado ficar mais legível no console. Porém é opcional.

Você copiou esse código que eu fiz e tentou rodar na sua máquina?

from curso-dio-intro-collections.

natan20200679 avatar natan20200679 commented on August 11, 2024

Executei o código, e funciona perfeitamente. Porém, ainda não consegui visualizar nesta saída essa formatação que colocou no final, ou seja, entender o que realmente ela faz. Essa invocação de métodos podemos dizer que é uma chamada de rotina, conforme vemos em lógica de programação?

from curso-dio-intro-collections.

cami-la avatar cami-la commented on August 11, 2024

Descomentando as linhas 6 e 9.

2022-01-26_11-30

  • A primeira linha que contornei com o retângulo, representa todos os lançamentos dos dados (100 vezes). Note que só é possível os resultados de 1 a 6 que são as faces possíveis de um dado.
  • No segundo retângulo, é a quantidade de vezes que cada resultado. A face 1 apareceu 13 vezes, a face 2 aparecceu 15 vezes e assim sucessivamente até a face 6. (13+15+21+23+15+13) = 100. Que foi a quantidade de vezes que o dado foi lançado.
  • No terceiro retângulo, é a saída formadata do segundo retângulo para ficar mais legível.

Pode ser pensar em chamada de rotina. Mas em Orientação a Objetos usamos os métodos.

from curso-dio-intro-collections.

natan20200679 avatar natan20200679 commented on August 11, 2024

Camila, perdoe-me querida, eu não expressei claramante a minha dúvida quando coloquei que não consegui visualizar na saída a formatação que colocou no final. Eu me referi apenas à formatação numérica que colocou na linha 74. Mesmo assim, levei em consideração sua explicação.

from curso-dio-intro-collections.

natan20200679 avatar natan20200679 commented on August 11, 2024

Analisando agora, achei um pouco confuso a lógica presente entre as linhas 43 e 48, porque estou habituado a utilizar o "if" sempre no formato if (var != valor ou dado), por exemplo. Tou te alugando hoje kkk

from curso-dio-intro-collections.

cami-la avatar cami-la commented on August 11, 2024

Analisando agora, achei um pouco confuso a lógica presente entre as linhas 43 e 48, porque estou habituado a utilizar o "if" sempre no formato if (var != valor ou dado), por exemplo. Tou te alugando hoje kkk

Ah, vamos lá.
Dentro do if é necessário ter true ou false.
Então, você pode fazer verificações dentro desse if, como por exemplo o da linha 43.
A linha 48 é o método .put() do Map, para adicionar ou atualizar chave e valor de um elemento do Map.

from curso-dio-intro-collections.

natan20200679 avatar natan20200679 commented on August 11, 2024

Entendi querida! Obrigado pela atenção!

from curso-dio-intro-collections.

natan20200679 avatar natan20200679 commented on August 11, 2024

Se possível, gostaria que verificasse erros nos comentários que acrescentei ao código https://github.com/natan20200679/Java/blob/master/Collections/src/Map/EP_2.java

from curso-dio-intro-collections.

cami-la avatar cami-la commented on August 11, 2024

Se possível, gostaria que verificasse erros nos comentários que acrescentei ao código https://github.com/natan20200679/Java/blob/master/Collections/src/Map/EP_2.java

Sim está ótimo!!

Só na linha 18:
// Criação da lista (dicionário) de par de valores contendo a frequência de cada número do dado, através da
List é uma lista e Map é um dicionário. Então não pode misturar os conceitos. (:

from curso-dio-intro-collections.

natan20200679 avatar natan20200679 commented on August 11, 2024

Se possível, gostaria que verificasse erros nos comentários que acrescentei ao código https://github.com/natan20200679/Java/blob/master/Collections/src/Map/EP_2.java

Sim está ótimo!!

Só na linha 18: // Criação da lista (dicionário) de par de valores contendo a frequência de cada número do dado, através da List é uma lista e Map é um dicionário. Então não pode misturar os conceitos. (:

Obg querida!

from curso-dio-intro-collections.

Guardianofligth avatar Guardianofligth commented on August 11, 2024

Boa noite Camila! Acabei de assistir a sua mentoria na DIO.

Então, sobre o exercício proposto de fazer uma "List" de temperatura em semestre sua media. Gostaria de sua correção sobre esse exercício.
Exercicio00

Gostaria de saber se é essa a ideia. att Henrique

from curso-dio-intro-collections.

cami-la avatar cami-la commented on August 11, 2024

Boa noite Camila! Acabei de assistir a sua mentoria na DIO.

Então, sobre o exercício proposto de fazer uma "List" de temperatura em semestre sua media. Gostaria de sua correção sobre esse exercício. Exercicio00

Gostaria de saber se é essa a ideia. att Henrique

Sim, Herique. Essa forma que você fez, é uma forma válida!
Também fiz, só que utilizei o Strem API:
https://github.com/cami-la/curso-dio-intro-collections/blob/master/src/br/com/dio/collection/list/ExercicioProposto01.java

Dá uma olhadinha para fazer uma comparação. ;)

from curso-dio-intro-collections.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.