-
Notifications
You must be signed in to change notification settings - Fork 213
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Map - Exercício Proposto 2 #8
Comments
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());
}
}
} |
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? |
Oi amigo, vamos lá. Nas linhas 18, 36, 56 e 29 são as criações dos métodos. 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. 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? |
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? |
Descomentando as linhas 6 e 9.
Pode ser pensar em chamada de rotina. Mas em Orientação a Objetos usamos os métodos. |
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. |
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 |
Amigo, nem se preocupe. Estou aqui pra ajudar. Aaaah, agora acho que entendi. No caso, você não entendeu o 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 |
Ah, vamos lá. |
Entendi querida! Obrigado pela atenção! |
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: |
Obg querida! |
Sim, Herique. Essa forma que você fez, é uma forma válida! Dá uma olhadinha para fazer uma comparação. ;) |
Camila, boa tarde! Eu não consegui assimilar este exercício, mesmo refazendo baseado na sua solução. Tu poderias me explicar tua lógica, mostrando ao menos outra opção no uso de métodos e funções, principalmente a partir do uso do Map em diante?
The text was updated successfully, but these errors were encountered: