Como criar um array em NetBeans

5 respostas
Suellen_Susu

[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()) ];

amsterdatech

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() + "'");
			}
		}
	}

}
Suellen_Susu

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

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

nilopadilha

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