Como criar um array em NetBeans

[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!

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

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

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;

[code]package br.com.amsterdaintelligence.quizrandom;

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

/**
*

  • @author amsterda
    */
    public class QuizRandom {

    private List perguntas;
    private List perguntasRespondidas;
    private Random randomGenerator;

    //Inicia o Quiz com perguntas vindas da base de dados, colocadas em um List
    public QuizRandom(List perguntas) {
    this.perguntas = perguntas;
    this.perguntasRespondidas = new ArrayList();
    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 getPerguntas() {
    List perguntasAuxiliar = new ArrayList();

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

    }
    }[/code]

Classe Pergunta:

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

Testes para classe QuizRandom no Netbeans com JUnit 4

[code]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”);
    }
    }[/code]

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

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

}

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

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

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