Ir para conteúdo
Fórum Script Brasil
  • 0

ARRAY


netocazuza

Pergunta

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

  • 0

Desculpem amigos. Precipitação de principiante. Na página 226 do livro tem a solução do meu problema, usando array. Segue o código pra quem precisar. Já implementei aqui com outras variáveis e deu tudo certo.
import java.util.Random;

public class DadoArray
{
public static void main (String[] args)
{
Random randomNumbers = new Random(); // gerador de nr. aleatór.
int [] frequency = new int [7]; // array e cont. de frequência
// lança os dados 6000 X; utiliza vl do dado cmo índice de freq
for (int roll = 1; roll <= 6000; roll++)
++frequency[1 + randomNumbers.nextInt(6)];
System.out.printf("%s%15s\n", "Lado", "Frequência");
//Gera saída do valor de cada elemento do array
for (int face = 1; face < frequency.length; face++)
System.out.printf("%4d%10d\n", face, frequency[face]);
} // fim de main

} // fim de classe

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...