javahunter
Boa tarde.
Bom vamos por partes.
A)
int[] frequency = new int[7];
aqui ele criou um vetor do tipo int e tamanho 7
a princípio eu também achei estranho mas é só juntar as peças que dá para entender.
1º o vetor sempre começa o índice em 0 , mas se pensar, tipo o dado não tem o número 0.
esse vetor de tamanho 7, vai de 0 à 6 ou seja
[0]-[1]-[2]-[3]-[4]-[5]-[6] => 7 posições/índices
aí o programa vai atribuir o incremento de +1 na posição relativa ao número que voltou do Random
- você pode usar um vetor de tamanho 6 para condizer com o tamanho real do dado mas terá que guardar
na cabeça que:
a posição/índice 0 do vetor guarda quantas vezes caiu o número 1 no dado
a posição/índice 1 do vetor guarda quantas vezes caiu o número 2 no dado
a posição/índice 2 do vetor guarda quantas vezes caiu o número 3 no dado
a posição/índice 3 do vetor guarda quantas vezes caiu o número 4 no dado
a posição/índice 4 do vetor guarda quantas vezes caiu o número 5 no dado
a posição/índice 5 do vetor guarda quantas vezes caiu o número 6 no dado
isso é difícil pois é complexo e confunde…
por isso em alguns casos eles adotam desconsiderar a posição 0 do vetor para ficar
mais fácil a didática de explicação.
B) agora vamos ao mais simples
++frequency[1 + randomNumbers.nextInt(6) ];
1º o código ++frequency
é tipo assim
se vc fizer:
int a=0;
a++;
é o mesmo que fazer
int a=0;
++a;
e para vetores também é a mesma coisa dizer
int[ ] vetor = new int[2];
vetor[0] ++;
ou
int[ ] vetor = new int[5];
++vetor[0] ;
isso é uma coisa determinada na linguagem ou seja
é igual dizer
Português => A casa azul
Inglês => The blue house
ou seja duas coisas que fazem o mesmo.
agora a parte complicada
2º o código completo
++frequency[1 + randomNumbers.nextInt(6) ];
isso aí quer dizer o seguinte
o vetor frequency vai ganhar um incremento de +1 ou seja ++frequency
e isso vai ocorrer na posição [1 + randomNumbers.nextInt(6) ];
ou seja ao invés dele colocar a posição como 1,2,3,4,5 ou 6
ele já está chamando o random dentro da posição em que será passada
para o frequency incrementar o +1
dessa forma o que ocorre é um empilhamento
ou seja
++frequency
vai incrementar +1
na posição [?]
onde ? será o número resultante da chamada do random
que está dentro do colchete
ou seja
ele primeiro vai executar o que está dentro do colchete
aí o random retorna para ele um número de 1 a 6
ai o frequency incrementa +1
na posição que foi retornada pelo frequency
FIM
se tiver dúvida pode perguntar de novo
pois esse tema é complexo no início mas depois
você acostuma e entende.
Eu te indico duas coisas
1 - Leia também o Livro Java Use a Cabeça
pois é mais fácil de didática do que o Como Programar
aí depois de ler o Use a Cabeça, você lê o Como Programa.
2 - Aprenda a fazer o debug
muito importante pois você vai ver onde as coisas acontecem
ou seja a ordem das chamadas e empilhamentos
no youtube tem vários vídeos ensinando como debugar no eclipse e netbeans
Abraço e sucesso.
Precisando é só chamar hehehe