Variaveis Locais / Geracao de numeros aleatorios / Resultado incorreto

O codigo abaixo gera um resultado, acredito, incorreto. Aonde eu estou errando.

Eis o código:

public static void main(String[] args) {
        
      int frequencia[] = new int[6];
      int oMaior = 0;
     
      java.util.Random jogada = new java.util.Random();

      for(int contador = 1; contador <= 1000; contador++) {
         frequencia[jogada.nextInt(6)]++;
      }

      for(int contador = 0; contador < 6; contador++) {
          System.out.printf("Face %d: frequência: %d\n",contador, frequencia[contador] + 1);
      }
      oMaior = frequencia[0];
      for (int contador = 0; contador <= 5; contador++ ) {
        if (frequencia[contador] > oMaior){
            oMaior = frequencia[contador];
        }
      }

      System.out.printf("\nTeve mais sorte que apostou no dado: Face com %d frequências\n\n", oMaior );

    }

Produz como resultado, por exemplo:

Sempre o resultado é menor em 1 da maior frequencia.

O Problema é o seguinte: Eu uso o gerado de numeros aleatórios (Classe java.uil.Random) para simular o lancamento de um dado(1-6). Uso a variável frequencia para armazenar, para cada face(1-6) a frequência de vezes que ela ocorreu(veja o laço: for(int contador = 1; contador <= 1000; contador++) { frequencia[jogada.nextInt(6)]++; }).

Como resultado eu espero saber qual face teve mais frequencia para informar que teve mais sorte: Apostou na face que saiu mais vezes. Trecho do codigo abaixo:

oMaior = frequencia[0]; for (int contador = 0; contador <= 5; contador++ ) { if (frequencia[contador] > oMaior){ oMaior = frequencia[contador]; } }
O problema é que o resultado da sempre um numero menor (em 1) em relação a maior frequencia(veja o texto destaca em negrito). Aonde é que eu estou errando ???

Por que cargas d’água você somou 1 à frequência? Era para somar 1 ao contador, assim:

Um nome péssimo para contadores é “contador”. Eu prefiro “i” mesmo, ou então “linha”, “nLinha”, “coluna”, “nColuna”, “face”, “nFace” ou sei lá o quê.
“contador” ou, como já vi em alguns programas, “iContador”, é o pior nome para se dar a um contador.

(É que somando tudo que você mostrou no exemplo deu 1006, não 1000 como esperado. Daí é que eu percebi que as frequências estão certas, mas você está mostrando errado. )

[quote=thingol][quote]

          System.out.printf("Face %d: frequência: %d\n",contador, frequencia[contador] + 1);  

[/quote]

Por que cargas d’água você somou 1 à frequência? Era para somar 1 ao contador, assim:

Um nome péssimo para contadores é “contador”. Eu prefiro “i” mesmo, ou então “linha”, “nLinha”, “coluna”, “nColuna”, “face”, “nFace” ou sei lá o quê.
“contador” ou, como já vi em alguns programas, “iContador”, é o pior nome para se dar a um contador.

(É que somando tudo que você mostrou no exemplo deu 1006, não 1000 como esperado. Daí é que eu percebi que as frequências estão certas, mas você está mostrando errado. )
[/quote]

obrigado…Estudar java e trabalhar ao mesmo tempo é complicado…rsrsrsrs