Gerar String aleatória[resolvido]

6 respostas
A

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

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");

6 Respostas

A

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");

		}
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:

ViniGodoy
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: [url]http://www.guj.com.br/articles/17[/url]

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

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:

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);
    }
}

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

guijocargo

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.

: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)

Rodrigo_Sasaki
A

valeu ae pessoal… consegui resolver agora…

Criado 25 de junho de 2012
Ultima resposta 26 de jun. de 2012
Respostas 6
Participantes 4