Pregunta

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Yazmín
 */

import javax.microedition.lcdui.*;

class Pregunta extends Form{
    String Nombre;
    Respuesta[] respuestas;
    String TextoResp[];
    String Texto;
    int numResp;
    ChoiceGroup opciones;


    public Pregunta(String TextoPregunta,String Cuestionario, int numPreg){
        super(Cuestionario);
        Texto = TextoPregunta;

        //Obtener la pregunta
        getNombre();

        // construir numero de respuestas por pregunta
        cantidadResp();

        respuestas=new Respuesta[numResp];
        TextoResp=new String [numResp];
        obtenerResp();
        llenaResp();
        opciones=new ChoiceGroup(numPreg + ". "+ Nombre, Choice.EXCLUSIVE);

        for(int i=0;i<numResp;i++){
            opciones.append(respuestas[i].toString(), null);

        }

        append(opciones);
    }

    // Obtener "nombre" -> texto de pregunta
    private void getNombre(){
        int posInicial, posFinal;
        posInicial = Texto.indexOf('>') +1;
        posFinal = Texto.indexOf('<', posInicial);
        //trim para eliminar todos los espacios innecesarios (tabs)
        //substring para seccionar
        Nombre = Texto.substring(posInicial, posFinal).trim();
    }

    public Respuesta getResp(){
        //obtener respuesta que se indique
        return respuestas[opciones.getSelectedIndex()];

    }

    //Obtener la cantidad de respuestas por cada pregunta.
    private void cantidadResp(){
        int contador=0, pos=-1;

        while((pos= Texto.indexOf('<', pos+1))!=-1) {
        contador=contador+1;
        }

        //Se descuentan los caracteres '<' inicial y final de cada pregunta
        contador = contador -2;
        //Se descuentas caracteres '<' sobrantes de isCorrect y Answer
        numResp = contador /4;
    }

    //Obtener el texto de cada respuesta
    private void obtenerResp(){
    int posIni, posFin=0;

    for(int i=0;i<numResp;i++){
        posIni=Texto.indexOf("<answer>", posFin);
        posFin=Texto.indexOf("</answer>", posIni);
        //Aumentar 9 espacios que implica </answer> para tomar el inmediato siguiente
        posFin=posFin+9;
        //tomar respuesta por respuesta
        TextoResp[i]=Texto.substring(posIni, posFin);
    }
 }

 //Llenar con el texto de las respuestas
 private void llenaResp(){
    int posIni, posFin=0;
    String nombreResp;
    boolean correcto;

    for(int i=0; i<numResp;i++){
     // busca nombre o bien texto de respuesta
        posIni=TextoResp[i].indexOf('>')+1;
        posFin=TextoResp[i].indexOf('<',posIni);
        nombreResp=TextoResp[i].substring(posIni, posFin).trim();

        //Buscamos la respuesta correcta
        posIni=TextoResp[i].indexOf('>',posFin)+1;
        posFin=TextoResp[i].indexOf('<',posIni);
        //Trim - Eliminamos espacios y tab
        correcto= TextoResp[i].substring(posIni, posFin).trim().equalsIgnoreCase("True");
        //creamos objeto tipo respuesta con sus respectivos valores
        respuestas[i]=new Respuesta(nombreResp,correcto);
    }
 }
}

Comments