No livro do Deitel tem um código interessante, onde ele simula um lançamento de um dado 6 mil vezes, e lista a frequência com que as faces se repetiram. Exemplo: Face1 958 vezes, face2 844 vezes, etc. Tudo isso de forma randômica. Compilei o código, e o adaptei pra mega sena. Ao invés de testar as seis faces de um dado, testei os 60 números da loteria, usando o mesmo princípio.
Como sou iniciante em Java, simplesmente repeti o código, implementando mais 54 variáveis, o que deixou o troço funcional, porém muito trabalhoso. Gostaria de saber, de acordo com as boas práticas da programação, como poderia fazer isso utilizando array, ou algo do gênero. Segue o código pra que dêem uma olhada.
import java.util.Random;
public class RollDie
{
public static void main(String[] args)
{
Random randomNumbers = new Random(); // gerador de número aleatório
int frequency1 = 0; // mantém a contagem de 1s lançados
int frequency2 = 0; // contagem de 2s lançados
int frequency3 = 0; // contagem de 3s lançados
int frequency4 = 0; // contagem de 4s lançados
int frequency5 = 0; // contagem de 5s lançados
int frequency6 = 0; // contagem de 6s lançados
int face; // armazena o valor lançado mais recentemente
// soma 6.000 lançamentos de um dado
for (int roll = 1; roll <+ 6000; roll++)
{
face = 1 + randomNumbers.nextInt(6); // número entre 1 a 6
// define o valor de lançamento de 1 a 6 e incrementa o contador apropriado
switch (face)
{
case 1:
++frequency1; // incrementa o contador de 1s
break;
case 2:
++frequency2; // incr. contador 2s
break;
case 3:
++frequency3; // incr. contador 3s
break;
case 4:
++frequency4;
break;
case 5:
++frequency5;
break;
case 6:
++frequency6;
break;// opcional ao final do switch
} // fim do switch
42,3-24 20%
No meu código eu fiquei com 60 frequency (frequency1...frequency60),e no switch tive 60 case (case 1... case 60) e gostaria de saber como enxugar esse código com um array, ou outro recurso, principalmente na questão de listar as entradas também.
Pergunta
netocazuza
No livro do Deitel tem um código interessante, onde ele simula um lançamento de um dado 6 mil vezes, e lista a frequência com que as faces se repetiram. Exemplo: Face1 958 vezes, face2 844 vezes, etc. Tudo isso de forma randômica. Compilei o código, e o adaptei pra mega sena. Ao invés de testar as seis faces de um dado, testei os 60 números da loteria, usando o mesmo princípio.
Como sou iniciante em Java, simplesmente repeti o código, implementando mais 54 variáveis, o que deixou o troço funcional, porém muito trabalhoso. Gostaria de saber, de acordo com as boas práticas da programação, como poderia fazer isso utilizando array, ou algo do gênero. Segue o código pra que dêem uma olhada.
import java.util.Random;
public class RollDie
{
public static void main(String[] args)
{
Random randomNumbers = new Random(); // gerador de número aleatório
int frequency1 = 0; // mantém a contagem de 1s lançados
int frequency2 = 0; // contagem de 2s lançados
int frequency3 = 0; // contagem de 3s lançados
int frequency4 = 0; // contagem de 4s lançados
int frequency5 = 0; // contagem de 5s lançados
int frequency6 = 0; // contagem de 6s lançados
int face; // armazena o valor lançado mais recentemente
// soma 6.000 lançamentos de um dado
for (int roll = 1; roll <+ 6000; roll++)
{
face = 1 + randomNumbers.nextInt(6); // número entre 1 a 6
// define o valor de lançamento de 1 a 6 e incrementa o contador apropriado
switch (face)
{
case 1:
++frequency1; // incrementa o contador de 1s
break;
case 2:
++frequency2; // incr. contador 2s
break;
case 3:
++frequency3; // incr. contador 3s
break;
case 4:
++frequency4;
break;
case 5:
++frequency5;
break;
case 6:
++frequency6;
break;// opcional ao final do switch
} // fim do switch
42,3-24 20%
No meu código eu fiquei com 60 frequency (frequency1...frequency60),e no switch tive 60 case (case 1... case 60) e gostaria de saber como enxugar esse código com um array, ou outro recurso, principalmente na questão de listar as entradas também.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.