Como criar um array em NetBeans

5 respostas
S

[i]Bom, eu vi o código de vcs mas ainda falta algumas coisas no q preciso fazer:

Estou fazendo um TCC, q é um jogo tipo Quiz (q ja faz conexão com o banco de dados MySql), e precisava saber como posso criar, pelo NetBeans, um array q guarde o meu total de perguntas q possuo do banco, mas q ao msmo tempo funcione d forma randômica, fazendo com q as perguntas ñ sejam apresentadas ao usuário sempre na msma ordem, e q ñ repita a msma pergunta depois q for mostrada ao usuário.

Grata a qm puder me ajudar!

Grande abraço!

5 Respostas

L

String[] perguntas = new String[]{“p1”,“p2”,“p3”};

String perguntaRandom = perguntas[ (int)(Math.random()*perguntas.length()) ];

A

Ola,

Codigo criado no processo de prototipagem de um sistema para e-learning dentro do grupos de estudos OSUM MetroCarioca.

Classe Quiz Random gerencia perguntas e perguntas respondidas;

package br.com.amsterdaintelligence.quizrandom;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 *
 * @author amsterda
 */
public class QuizRandom {

    private List<Pergunta> perguntas;
    private List<Pergunta> perguntasRespondidas;
    private Random randomGenerator;

    //Inicia o Quiz com perguntas vindas da base de dados, colocadas em um List<Pergunta>
    public QuizRandom(List<Pergunta> perguntas) {
        this.perguntas = perguntas;
        this.perguntasRespondidas = new ArrayList<Pergunta>();
        this.randomGenerator = new Random();
    }

    public Pergunta pegaPergunta() {

        // Pega uma pergunta aleatoriamente no vetor de perguntas;
        Pergunta perguntaAuxiliar = this.perguntas.get(this.randomGenerator.nextInt(perguntas.size()));

        //Se o vetor de perguntas já respondidas não contiver  a pergunta pega randomicamente;

        if (!perguntaJaRespondida(perguntaAuxiliar)) {
            perguntasRespondidas.add(perguntaAuxiliar);

            return perguntaAuxiliar;
        }
        return pegaPergunta();

    }

    public boolean perguntaJaRespondida(Pergunta perguntaAuxiliar) {
        //Verifica se a pergunta já foi respondida
        boolean perguntaJaRespondida = perguntasRespondidas.contains(perguntaAuxiliar);
        return perguntaJaRespondida;
    }

    public List<Pergunta> getPerguntas() {
        List<Pergunta> perguntasAuxiliar = new ArrayList<Pergunta>();

        for (Pergunta pergunta : perguntas) {
            perguntasAuxiliar.add(pergunta);
        }
        return perguntasAuxiliar;
    }
}

Classe Pergunta:

package br.com.amsterdaintelligence.quizrandom;

/**
 *
 * @author amsterda
 */
public class Pergunta {

    private String conteudoPergunta;

    public Pergunta(String conteudoPergunta) {
        this.conteudoPergunta = conteudoPergunta;
    }

    public String getConteudoPergunta() {
        return conteudoPergunta;
    }

    public void setConteudoPergunta(String conteudoPergunta) {
        this.conteudoPergunta = conteudoPergunta;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Pergunta other = (Pergunta) obj;
        if ((this.conteudoPergunta == null) ? (other.conteudoPergunta != null) : !this.conteudoPergunta.equals(other.conteudoPergunta)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 67 * hash + (this.conteudoPergunta != null ? this.conteudoPergunta.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return new StringBuilder().append("\nPergunta: ").append(this.conteudoPergunta).toString();
    }
}

Testes para classe QuizRandom no Netbeans com JUnit 4

package br.com.amsterdaintelligence.quizrandom;

import java.util.Arrays;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

/**
 *
 * @author amsterda
 */
public class QuizRandomTest {

    public QuizRandomTest() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }

    // TODO add test methods here.
    // The methods must be annotated with annotation @Test. For example:
    //
    // @Test
    // public void hello() {}
    @Test
    public void testInicializaçãoDasPerguntas() {
        Pergunta pergunta1 = new Pergunta("Pergunta teste1");

        Pergunta pergunta2 = new Pergunta("Pergunta teste2");

        QuizRandom qr = new QuizRandom(Arrays.asList(pergunta1, pergunta2));
        assertEquals(pergunta1, qr.getPerguntas().get(0));
        assertEquals(pergunta2, qr.getPerguntas().get(1));
    }

    @Test
    public void testPerguntaJaRespondida() {
        Pergunta pergunta1 = new Pergunta("Pergunta teste1");

        Pergunta pergunta2 = new Pergunta("Pergunta teste2");

        QuizRandom qr = new QuizRandom(Arrays.asList(pergunta1, pergunta2));

        Pergunta perguntaRespondida = qr.pegaPergunta();

        assertTrue(qr.perguntaJaRespondida(perguntaRespondida));
    }

    @Test
    public void testPerguntaNaoFoiRespondida() {
        Pergunta pergunta1 = new Pergunta("Pergunta teste1");

        Pergunta pergunta2 = new Pergunta("Pergunta teste2");

        QuizRandom qr = new QuizRandom(Arrays.asList(pergunta1, pergunta2));

        Pergunta perguntaRespondida = qr.pegaPergunta();

        if (perguntaRespondida.equals(pergunta1)) {
            assertFalse(qr.perguntaJaRespondida(pergunta2));
        } else {
            assertFalse(qr.perguntaJaRespondida(pergunta1));
        }


    }

    @Test
    public void testPerguntaExibidaNaTelaDaFormaCorreta() {
        Pergunta pergunta1 = new Pergunta("Pergunta teste1");
        assertEquals(pergunta1.toString(), "\nPergunta: Pergunta teste1");
    }
}

Nota que os numeros gerados tanto por Math.random(), como por new Random.nextInt() são pseudo-randomicos, ou seja, são baseados no clock e desta forma as sequencias tendem a se repetir e não parecerem realmente aleatorias.Contudo para diminuir a complexidade, não foi usado um algoritmo gerador de numeros randomicos especializado .

Espero ter ajudado!

[ ]'s

M

Um meio bem simples de se fazer isso é usando Collections. Veja um pequeno (porém funcional) exemplo:

public class Pergunta {

	private String pergunta;
	private String resposta;

	public Pergunta(String pergunta, String resposta) {
		this.pergunta = pergunta;
		this.resposta = resposta;
	}

	public String getPergunta() {
		return pergunta;
	}

	public String getResposta() {
		return resposta;
	}

}
import java.util.Collections;
import java.util.LinkedList;
import java.util.Scanner;

public class ComboModel {

	public static void main(String[] args) {
		// LinkedList que usaremos para guardar as perguntas
		LinkedList<Pergunta> perguntas = new LinkedList<Pergunta>();
		// adicionamos as perguntas, você precisaria resgatar isso do BD
		perguntas.add(new Pergunta("Qual o melhor site sobre Java do Brasil?",
				"GUJ"));
		perguntas.add(new Pergunta(
				"A Sun Microsystems foi recentemente comprada"
						+ " por qual empresa?", "Oracle"));
		perguntas.add(new Pergunta(
				"Complete a frase: Errar é humano, persistir no erro é...",
				"bug"));
		// aqui está a sacada: embaralhamos a nossa lista de perguntas
		Collections.shuffle(perguntas);
		// vamos ler do teclado
		Scanner teclado = new Scanner(System.in);
		// enquanto houverem mais perguntas, usamos o método poll() que resgata
		// e remove a primeira pergunta da lista
		for (Pergunta p = perguntas.poll(); p != null; p = perguntas.poll()) {
			// imprimimos a pergunta
			System.out.println(p.getPergunta());
			// e lemos a resposta
			String resposta = teclado.nextLine();
			// se for igual, OK, senão mostra a resposta certa
			if (resposta.toLowerCase().contains(p.getResposta().toLowerCase())) {
				System.out.println("Exato!");
			} else {
				System.out.println("Errado... A resposta certa seria: '"
						+ p.getResposta() + "'");
			}
		}
	}

}
S

[i][color=purple]Vlw por responderem pessoal, foi de ótima ajuda!!!

bjos… ;D[/color][/i]

N

Boa tarde pessoal, ressuscitando esse post, como eu faria se quisesse fazer essa aplicação multi escolha?

Criado 15 de março de 2010
Ultima resposta 29 de mai. de 2012
Respostas 5
Participantes 5