Função Random (aleatório)

3 respostas
J

E ai Galera, td certo
Então, estou com um pequeno problema, e espero q alguem possa me ajudar!
Tenho q fazer um quiz para dispositivos móveis. o código já está pronto, mas preciso fazer com que as perguntas do quiz apareçam de modo aleatório.
Como faço isso
Segue abaixo o código já pronto.
Se alguem puer me ajudar…agradeço!!!
Valew…
JM

Código!

import javax.microedition.midlet.<em>;

import javax.microedition.lcdui.</em>;

import javax.microedition.rms.RecordStore;

import <a href="http://java.io">java.io</a>.*;

public class Lab6 extends MIDlet implements CommandListener{
private RecordStore rs = null;

private Display display;

private Form fmEntradaNome;

private Form fmEscolhetema;

private TextField tfNome;

private Command cmAvancar1;

private ChoiceGroup cgTema1;

private Command cmIniciar;
private Form fmPergunta2;

private ChoiceGroup cgPergunta2;

private Command cmAvancar3;
private int QtAcertos = 0;

private int QtdErros = 0;

private int inicialIndex;

private int Pergunta;

private String opCorreta;

private final String NOME_ARMAZEM_Pergunta = Perguntas;

public Lab6 () {
display = Display.getDisplay(this);

Pergunta = 0;

fmEntradaNome = new Form(Entra do nome);

tfNome= new TextField(Entre com seu nome”,"",10,1);

fmEntradaNome.append(tfNome);

cmAvancar1 = new Command(Avançar”,Command.SCREEN,1);

fmEntradaNome.addCommand(cmAvancar1);

fmEntradaNome.setCommandListener(this);
fmEscolhetema = new Form (Escolha o Tema);

cgTema1 = new ChoiceGroup(Opções,Choice.EXCLUSIVE);

cgTema1.append (Futebol, null);

cgTema1.append (Desenhos,null);

cgTema1.append (Filmes, null);

cgTema1.append (Novelas, null);

cmIniciar = new Command (Iniciar, Command.SCREEN,1);

fmEscolhetema.append(cgTema1);

fmEscolhetema.addCommand(cmIniciar);

fmEscolhetema.setCommandListener(this);
fmPergunta2 = new Form(Pergunta);

cmAvancar3 = new Command(Avançar,Command.SCREEN,2);

cgPergunta2 = new ChoiceGroup("",Choice.EXCLUSIVE);

fmPergunta2.append(cgPergunta2);

fmPergunta2.addCommand(cmAvancar3);

fmPergunta2.setCommandListener(this);

PreparaDados();
}

public void startApp() {

display.setCurrent (fmEntradaNome);

}

public void pauseApp() {
}

public void destroyApp(boolean unconditional){
}

public void commandAction(Command c, Displayable d)
{

if (c==cmIniciar)
{
   Pergunta ++;
   BuscarPergunta(Pergunta);
   display.setCurrent (fmPergunta2);
}
else
{
if ( c==cmAvancar1)
{
    display.setCurrent (fmEscolhetema);
}
else
{
        if (c==cmAvancar3)
        {
            String resultadoResposta = cgPergunta2.getString(cgPergunta2.getSelectedIndex());
            if (resultadoResposta.equals(opCorreta))
            {
                QtAcertos ++;
                
            }
            else
            {
                QtdErros ++;
            }

            Pergunta ++;
            
            if (Pergunta <= 8)
            {
                BuscarPergunta(Pergunta);
            }
            else
            {
                 cgPergunta2.deleteAll();
                 cgPergunta2.setLabel("Total de Acertos: " + String.valueOf(QtAcertos));                        
            }
        }
    }
 }
}

public void AbrirRecordStore(String nomeArmazem){

try{

rs = RecordStore.openRecordStore(nomeArmazem, true);

}catch (Exception e){

e.printStackTrace();

}

}

public void FechaRecordStore(){

try

{

rs.closeRecordStore();

}

catch (Exception e){

e.printStackTrace();

}

}
public void InsereDados(ByteArrayOutputStream strmBytes, DataOutputStream strmDataType,
                       String Pergunta, String Opcao1, String Opcao2, String Opcao3, String Opcao4, String RespostaCorreta)
{
    try
    {

        strmDataType.writeUTF(Pergunta);
        strmDataType.writeUTF(Opcao1);
        strmDataType.writeUTF(Opcao2);
        strmDataType.writeUTF(Opcao3);
        strmDataType.writeUTF(Opcao4);
        strmDataType.writeUTF(RespostaCorreta);
        strmDataType.flush();
        byte[] record;
        record = strmBytes.toByteArray();
        rs.addRecord(record,0,record.length);

        strmBytes.reset();
    }
    catch(Exception e)
    {
    }
}
public void PreparaDados()
{
    AbrirRecordStore(NOME_ARMAZEM_Pergunta);

    try
    {
        ByteArrayOutputStream strmBytes = new ByteArrayOutputStream();
        DataOutputStream strmDataType = new DataOutputStream(strmBytes);

        InsereDados(strmBytes,strmDataType,"Quem vai ganhar a libertadores?","São Paulo","Libertad","Cruzeiro","Internacional","Libertad");
        InsereDados(strmBytes,strmDataType,"Quem vai ser o artilheiro do brasileiro?","Fred","Fernandão","Ronaldo","Kleber","Fred");
        InsereDados(strmBytes,strmDataType,"Dos times abaixo, qual tem mais chance de cair para serie B?","Avai","Palmeiras","Vasco","Fluminense","Palmeiras");
        InsereDados(strmBytes,strmDataType,"Quem foi o campeão da copa de 86?","Brasil","França","Argetina","Italia","Argentina");
        InsereDados(strmBytes,strmDataType,"Quantas vezes o atacante Dagoberto (São Paulo) foi substituído no Brasileirão 2007?","23","15","19","21","21");
        InsereDados(strmBytes,strmDataType,"Apenas três clubes da Série A disputaram todos os anos a principal divisão do Brasileiro. Quais foram?","Cruzeiro, Flamengo e Internacional","Flamengo, Goiás e São Paulo","Atlético/PR, São Paulo e Santos","Fluminense, Internacional e Santos","Atlético/PR, São Paulo e Santos");
        InsereDados(strmBytes,strmDataType,"Que nome recebeu a primeira edição do campeonato, em 1971?","Campeonato Brasileiro de 1971","Primeiro Campeonato Nacional de Clubes","Taça Brasil","Taça Roberto Gomes Pedrosa","Primeiro Campeonato Nacional de Clubes");
        InsereDados(strmBytes,strmDataType,"Desde que começou a era dos pontos corridos, qual o time que menos pontos totalizou?","Portuguesa","Santa Cruz","Ipatinga","América/RN","América/RN");

        strmBytes.close();
        strmDataType.close();
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
    FechaRecordStore();
}

public void BuscarPergunta(int PerguntaDesejada)
{
    AbrirRecordStore(NOME_ARMAZEM_Pergunta);
    try
    {
        
        byte[] recData = new byte[500];
        ByteArrayInputStream strmBytes = new ByteArrayInputStream(recData);
        DataInputStream strmDataType = new DataInputStream(strmBytes);
        String Questao, Opcao1, Opcao2, Opcao3, Opcao4;

        rs.getRecord(PerguntaDesejada,recData,0);

        Questao = strmDataType.readUTF();
        Opcao1 = strmDataType.readUTF();
        Opcao2 = strmDataType.readUTF();
        Opcao3 = strmDataType.readUTF();
        Opcao4 = strmDataType.readUTF();
        opCorreta = new String(strmDataType.readUTF());
        
        cgPergunta2.deleteAll();
        
        
        cgPergunta2.setLabel(new String(Questao));
        cgPergunta2.append(new String(Opcao1), null);
        cgPergunta2.append(new String(Opcao2), null);
        cgPergunta2.append(new String(Opcao3), null);
        cgPergunta2.append(new String(Opcao4), null);

        strmBytes.reset();
        strmBytes.close();
        strmDataType.close();
 }
catch (Exception e)
{
    System.out.println(e.toString());
}
    FechaRecordStore();
}

}

3 Respostas

rdmardegam

Amigo você pode fazer assim:

Random rnd = new Random();
rnd.nextInt(10); // Neste caso gera um numero aleatorio 0-9

Entao oque vc pode fazer é gerar um numero aleatório com a quantidade de pergunta que você vai fazer, pega.
Se você armazenar as peguntar em um vetor, pegue o tamanho do vetor, se armazenar em uma coleção, peque o tamanho desta coleção !! entre outros.

Abraço.

luciano2

Coloca as questões em uma collection e usa a função o objeto Random para sortear as questõs.

luciano2

Nossa você respondeu bem rápido cara, e jmainda por favor use a tag code para deixar seu código mais legivel.

Criado 28 de maio de 2010
Ultima resposta 28 de mai. de 2010
Respostas 3
Participantes 3