Dado em java

Estou com um problema em um programinha. Criar um dado que rode 6000 vezes aleatoriamente.
O meu rodou porem não é aleatorio, cae sempre na mesma face.
Alguem poderia me dizer qual o erro no programa?

import java.util.Random;

public class dado {

public static void main (String []args) {
	Random dado = new Random();
	 int d=0;
	 int lado1=0;
	 int lado2=0;
	 int lado3=0;
	 int lado4=0;
	 int lado5=0;
	 int lado6=0;
	 
	for (int x=0; x<6000; x++){
		dado.nextInt(6);
		
		 
		switch(d){
		case 0:
			lado1++;
		break;
		case 1:
			lado2++;
		break;
		case 2: 
			lado3++;
		break;
		case 3:
			lado4++;
		break;
		case 4:
			lado5++;
		break;
		case 5:
			lado6++;
		break;
		}
	}
		
		System.out.println("face/frequencia");
		System.out.println("lado1 " + lado1);
		System.out.println("lado2 " + lado2);
		System.out.println("lado3 " + lado3);
		System.out.println("lado4 " + lado4);
		System.out.println("lado5 " + lado5);
		System.out.println("lado6 " + lado6);
}

}

Eu tentaria mudar o valor de d a cada iteração.

Sem falar que um array de int com 6 posições diminuiria o tamanho do teu programa pra umas 20 linhas.

Mas o valor inicial é sempre =0 correto?
Mas se eu deixo sem valor não roda. Então como faço para que eu não tenha de designar um valor e sim o programa me de um?

Vou dizer mais claramente:

Você não está atribuindo um valor aleatório à d. Ele continua o mesmo durante todo o programa, portanto sempre continua caindo na mesma face.

Outra opção é tirar a variável d e colocar o dado.nextInt direto dentro da condição switch.

Cara eu fiz o seguinte teste:

[code]import java.util.Random;

public class Dado {

public static void main(String[] args) {
	
	
	Random dado = new Random();
	
	for(int i = 0; i < 6; i++) {
		System.out.println(dado.nextInt(6));
	}
}

}[/code]

e o resultado foi esse:

4
3
2
0
5
4

quer dizer que ele está sim escolhendo aleatoriamente um valor, o que acontece é que sua variável d não está recebendo o valor gerado pelo dado.nextInt(6).

Faça assim:

d = dado.nextInt(6);

essa parte…

dado.nextInt(6); 

não atribui valor a nada.

Voce vai obter o resultado que espera mudando para:

d = dado.nextInt(6); 

Ok valeu rapazes muito obrigada.

public class tela{
	static Random r = new Random();
	static int dado[]=new int[6];
	static int lado=1;
	public static void main(String args[]){
		for (int i = 0; i < 6; i++) {
			dado[i]=i;
		}
		
		for (int i = 0; i < 100; i++) {
			System.out.println(dado[r.nextInt(6)]);
		}
		
	}
}

Assim funciona pra 100
é só aumentar o loop
nao sei se é isso que vc queria fazer
mas em cada passada do laço ele escolhe um lado do dado e imprime!

[quote=janjan][code]
public class tela{

static int dado[]=new int[6];
static int lado=1;
public static void main(String args[]){
	carregaDado();
	
	for (int i = 0; i < 100; i++) {
		System.out.println(dado[sortNum()]);
	}
	
}
static int sortNum(){
	int n = (int) (6*Math.random()) ;
	if(n==0){
		return 1;
	}
	return n ;
}
static void carregaDado(){
	for (int i = 0; i < 6; i++) {
		dado[i]=i;
	}		
}

}
[/code]

Assim funciona pra 100
é só aumentar o loop
nao sei se é isso que vc queria fazer
mas em cada passada do laço ele escolhe um lado do dado e imprime!
[/quote]

Não entendi essa… voce sorteia um numero que vai de 1 a 6 depois pega o valor correspondente em um array… o pior é que o numero 6 lança um ArrayIndexOutofBoundException e a posição 0 nunca vai ser lida.

foi mal confesso que fiz coisa naquele codigo sem utilidade
ajustei ele
agora acredito que esta razoavel
flw

Agora funciona melhor mas mesmo assim… se voce tem no array

[1,2,3,4,5,6]

Voce sorteia um numero de 0 a 5 e pega o numero respectivo do array.

Mas nesse caso não seria apenas aumentar em um o valor sorteado?

Quando falamos em array era para o resultado.

Algo assim.

public class Dado {
public static void main (String []args) {
Random dado = new Random();
int d=0;
int lados[] = new int[6];
for (int x=0; x<6000; x++){
d = dado.nextInt(6);
lados[d] = lados[d]+1;
System.out.println("face/frequencia");
System.out.println("lado1 " + lado[0]);
System.out.println("lado2 " + lado[1]);
System.out.println("lado3 " + lado[2]);
System.out.println("lado4 " + lado[3]);
System.out.println("lado5 " + lado[4]);
System.out.println("lado6 " + lado[5]);
}
}