Gerar String aleatória[resolvido]

tenho um vetor com 3 Strings, estou usando a classe Math.Random para sortear uma das 3, porém sempre pega a primeira palavra… e caso a palavra sorteada seja lua devo digitar a mesma para aparecer a mensagem. Mas não consigo nem digitar a palavra, acredito que meu erro deva estar no vetor onde declareis as palavras

[code]String palavras[] = {" lua",“casa”,“pia”};
for(int i = 0; i < palavras.length; i++){
System.out.println( palavras[(int)Math.random()]);

	   System.out.println(" digite uma palavra");
	if("lua".equalsIgnoreCase("lua")){
	   System.out.println(" você acertou");

[/code]

dando uma pequena ajustada no código

Scanner obj = new Scanner(System.in);
		
		String palavras[] = {" lua","casa","pia"};
		for(int i = 0; i < palavras.length; i++){
		System.out.println( palavras[(int)Math.random()]);
		
		
		  System.out.println(" digite uma palavra");		
		  if("lua".equalsIgnoreCase("lua")){
			
			palavras[i] = obj.next();
		    System.out.println(" você acertou");

		}

Eu usaria algo assim:

Random random = new Random(System.currentTimeMillis()); int n = random.nextInt() % 3

vai ser algo do tipo, da uma olhada aqui: http://www.guj.com.br/articles/17

A partir dai voce adapta a suas necessidades, bom codigo :wink:

[quote=guijocargo]Eu usaria algo assim:

Random random = new Random(System.currentTimeMillis()); int n = random.nextInt() % 3

vai ser algo do tipo, da uma olhada aqui: http://www.guj.com.br/articles/17

A partir dai voce adapta a suas necessidades, bom codigo :wink: [/quote]

Tem gente que gosta de complicar o que é feito para ser simples:
a) O construtor padrão da classe Random já inicia ele com System.currentTimeMillis();
b) Uma das versões do método next() já possui o valor máximo a ser sorteado.

Seu código poderia ser muito mais simples:

Random random = new Random(); int n = random.nextInt(3);

Acho que o objetivo do software era ser assim:

[code]final int TENTATIVAS = 5;
Random random = new Random();
Scanner in = new Scanner(System.in);

String palavras[] = {" lua",“casa”,“pia”};
for (int i = 0; i < TENTATIVAS; i++){
String sorteio = palavras[random.nextInt(palavras.length)];
System.out.println(“Digite uma palavra:”);
String digitado = in.nextLine();
if(sorteio.equalsIgnoreCase(digitado)){
System.out.println(“Você acertou”);
} else {
System.out.println("Você errou o certo era: " + sorteio);
}
}
[/code]

Note que “lua”.equalsIgnoreCase(“lua”) é uma tautologia. Ou seja, isso sempre retorna true.

[quote]Tem gente que gosta de complicar o que é feito para ser simples:
a) O construtor padrão da classe Random já inicia ele com System.currentTimeMillis();
b) Uma das versões do método next() já possui o valor máximo a ser sorteado.[/quote]

:oops: bom, agradeco pela dica :stuck_out_tongue: vi a postagem e lembrei que tinha feito algo assim a uns meses atras (ano passado acho ‘-’)
Mas obrigado pelo aviso ViniGodoy :smiley:

P.S.: Esqueci como se coloca autor na citacao :? (se alguem for me dar um help quanto a isso, manda PM pra nao postar aqui sem precisar, valeu!! :D)

valeu ae pessoal… consegui resolver agora…